1#![allow(non_camel_case_types)]
2#![allow(non_snake_case)]
3
4use crate::acb::{acb_ptr, acb_srcptr};
7use flint_sys::deps::*;
8use flint_sys::nmod_vec::nmod_t;
9use flint_sys::ulong_extras::n_factor_t;
10use libc::c_int;
11
12#[repr(C)]
13#[derive(Debug, Copy, Clone)]
14pub struct crt_struct {
15 pub num: ::std::os::raw::c_int,
16 pub n: nmod_t,
17 pub m: [mp_limb_signed_t; 15usize],
18 pub M: [mp_limb_t; 15usize],
19 pub vM: [mp_limb_t; 15usize],
20}
21pub type crt_t = [crt_struct; 1usize];
22
23pub type acb_dft_step_ptr = *mut acb_dft_step_struct;
24
25#[repr(C)]
26#[derive(Debug, Copy, Clone)]
27pub struct acb_dft_cyc_struct {
28 pub n: mp_limb_signed_t,
29 pub z: acb_ptr,
30 pub zclear: ::std::os::raw::c_int,
31 pub num: mp_limb_signed_t,
32 pub cyc: acb_dft_step_ptr,
33}
34
35pub type acb_dft_cyc_t = [acb_dft_cyc_struct; 1usize];
36
37#[repr(C)]
38#[derive(Debug, Copy, Clone)]
39pub struct acb_dft_rad2_struct {
40 pub e: ::std::os::raw::c_int,
41 pub n: mp_limb_signed_t,
42 pub dv: mp_limb_signed_t,
43 pub nz: mp_limb_signed_t,
44 pub z: acb_ptr,
45}
46
47pub type acb_dft_rad2_t = [acb_dft_rad2_struct; 1usize];
48
49#[repr(C)]
50#[derive(Debug, Copy, Clone)]
51pub struct acb_dft_bluestein_struct {
52 pub n: mp_limb_signed_t,
53 pub dv: mp_limb_signed_t,
54 pub z: acb_ptr,
55 pub g: acb_ptr,
56 pub rad2: acb_dft_rad2_t,
57}
58
59pub type acb_dft_bluestein_t = [acb_dft_bluestein_struct; 1usize];
60
61#[repr(C)]
62#[derive(Debug, Copy, Clone)]
63pub struct acb_dft_prod_struct {
64 pub n: mp_limb_signed_t,
65 pub num: mp_limb_signed_t,
66 pub cyc: acb_dft_step_ptr,
67}
68
69pub type acb_dft_prod_t = [acb_dft_prod_struct; 1usize];
70
71#[repr(C)]
72#[derive(Debug, Copy, Clone)]
73pub struct acb_dft_crt_struct {
74 pub n: mp_limb_signed_t,
75 pub c: crt_t,
76 pub dv: mp_limb_signed_t,
77 pub cyc: acb_dft_step_ptr,
78}
79
80pub type acb_dft_crt_t = [acb_dft_crt_struct; 1usize];
81
82#[repr(C)]
83#[derive(Debug, Copy, Clone)]
84pub struct acb_dft_naive_struct {
85 pub n: mp_limb_signed_t,
86 pub dv: mp_limb_signed_t,
87 pub zclear: ::std::os::raw::c_int,
88 pub z: acb_ptr,
89 pub dz: mp_limb_signed_t,
90}
91
92pub type acb_dft_naive_t = [acb_dft_naive_struct; 1usize];
93
94#[repr(C)]
95#[derive(Copy, Clone)]
96pub struct acb_dft_pre_struct {
97 pub n: mp_limb_signed_t,
98 pub type_: ::std::os::raw::c_int,
99 pub t: acb_dft_pre_struct__bindgen_ty_1,
100}
101
102#[repr(C)]
103#[derive(Copy, Clone)]
104pub union acb_dft_pre_struct__bindgen_ty_1 {
105 pub rad2: acb_dft_rad2_t,
106 pub cyc: acb_dft_cyc_t,
107 pub prod: acb_dft_prod_t,
108 pub crt: acb_dft_crt_t,
109 pub naive: acb_dft_naive_t,
110 pub bluestein: acb_dft_bluestein_t,
111}
112
113pub type acb_dft_pre_t = [acb_dft_pre_struct; 1usize];
114
115#[repr(C)]
116#[derive(Copy, Clone)]
117pub struct acb_dft_step_struct {
118 pub m: mp_limb_signed_t,
119 pub M: mp_limb_signed_t,
120 pub dv: mp_limb_signed_t,
121 pub z: acb_srcptr,
122 pub dz: mp_limb_signed_t,
123 pub pre: acb_dft_pre_t,
124}
125
126pub const DFT_NAIVE: ::std::os::raw::c_uint = 0;
127pub const DFT_CYC: ::std::os::raw::c_uint = 1;
128pub const DFT_PROD: ::std::os::raw::c_uint = 2;
129pub const DFT_CRT: ::std::os::raw::c_uint = 3;
130pub const DFT_RAD2: ::std::os::raw::c_uint = 4;
131pub const DFT_CONV: ::std::os::raw::c_uint = 5;
132pub type _bindgen_ty_23 = ::std::os::raw::c_uint;
133
134extern "C" {
135 pub fn _acb_dft_naive(
136 w: acb_ptr,
137 v: acb_srcptr,
138 dv: mp_limb_signed_t,
139 z: acb_srcptr,
140 dz: mp_limb_signed_t,
141 len: mp_limb_signed_t,
142 prec: mp_limb_signed_t,
143 );
144 pub fn acb_dft_naive(w: acb_ptr, v: acb_srcptr, len: mp_limb_signed_t, prec: mp_limb_signed_t);
145 pub fn acb_dft_crt(w: acb_ptr, v: acb_srcptr, len: mp_limb_signed_t, prec: mp_limb_signed_t);
146 pub fn acb_dft_cyc(w: acb_ptr, v: acb_srcptr, len: mp_limb_signed_t, prec: mp_limb_signed_t);
147 pub fn acb_dft_rad2_inplace(v: acb_ptr, e: c_int, prec: mp_limb_signed_t);
148 pub fn acb_dft_rad2(w: acb_ptr, v: acb_srcptr, e: c_int, prec: mp_limb_signed_t);
149 pub fn acb_dft_bluestein(
150 w: acb_ptr,
151 v: acb_srcptr,
152 len: mp_limb_signed_t,
153 prec: mp_limb_signed_t,
154 );
155 pub fn acb_dft_prod(
156 w: acb_ptr,
157 v: acb_srcptr,
158 cyc: *mut mp_limb_signed_t,
159 num: mp_limb_signed_t,
160 prec: mp_limb_signed_t,
161 );
162 pub fn acb_dft_rad2_inplace_threaded(v: acb_ptr, e: c_int, prec: mp_limb_signed_t);
163 pub fn acb_dft_convol_naive(
164 w: acb_ptr,
165 f: acb_srcptr,
166 g: acb_srcptr,
167 len: mp_limb_signed_t,
168 prec: mp_limb_signed_t,
169 );
170 pub fn acb_dft_convol_dft(
171 w: acb_ptr,
172 f: acb_srcptr,
173 g: acb_srcptr,
174 len: mp_limb_signed_t,
175 prec: mp_limb_signed_t,
176 );
177 pub fn acb_dft_convol_rad2(
178 w: acb_ptr,
179 f: acb_srcptr,
180 g: acb_srcptr,
181 len: mp_limb_signed_t,
182 prec: mp_limb_signed_t,
183 );
184 pub fn acb_dft_convol_mullow(
185 w: acb_ptr,
186 f: acb_srcptr,
187 g: acb_srcptr,
188 len: mp_limb_signed_t,
189 prec: mp_limb_signed_t,
190 );
191 pub fn acb_dft_convol(
192 w: acb_ptr,
193 f: acb_srcptr,
194 g: acb_srcptr,
195 len: mp_limb_signed_t,
196 prec: mp_limb_signed_t,
197 );
198 pub fn crt_init(c: *mut crt_struct, n: mp_limb_t);
199 pub fn crt_decomp(
200 y: acb_ptr,
201 x: acb_srcptr,
202 dx: mp_limb_signed_t,
203 c: *mut crt_struct,
204 len: mp_limb_t,
205 );
206 pub fn crt_recomp(y: acb_ptr, x: acb_srcptr, c: *mut crt_struct, len: mp_limb_t);
207 pub fn acb_dft_step(
208 w: acb_ptr,
209 v: acb_srcptr,
210 cyc: acb_dft_step_ptr,
211 num: mp_limb_signed_t,
212 prec: mp_limb_signed_t,
213 );
214 pub fn acb_dft_precomp(
215 w: acb_ptr,
216 v: acb_srcptr,
217 pre: *mut acb_dft_pre_struct,
218 prec: mp_limb_signed_t,
219 );
220 pub fn acb_dft_inverse_precomp(
221 w: acb_ptr,
222 v: acb_srcptr,
223 pre: *mut acb_dft_pre_struct,
224 prec: mp_limb_signed_t,
225 );
226 pub fn acb_dft_naive_precomp(
227 w: acb_ptr,
228 v: acb_srcptr,
229 pol: *mut acb_dft_naive_struct,
230 prec: mp_limb_signed_t,
231 );
232 pub fn acb_dft_cyc_precomp(
233 w: acb_ptr,
234 v: acb_srcptr,
235 cyc: *mut acb_dft_cyc_struct,
236 prec: mp_limb_signed_t,
237 );
238 pub fn acb_dft_rad2_precomp_inplace(
239 v: acb_ptr,
240 rad2: *mut acb_dft_rad2_struct,
241 prec: mp_limb_signed_t,
242 );
243 pub fn acb_dft_rad2_precomp(
244 w: acb_ptr,
245 v: acb_srcptr,
246 rad2: *mut acb_dft_rad2_struct,
247 prec: mp_limb_signed_t,
248 );
249 pub fn acb_dft_crt_precomp(
250 w: acb_ptr,
251 v: acb_srcptr,
252 crt: *mut acb_dft_crt_struct,
253 prec: mp_limb_signed_t,
254 );
255 pub fn acb_dft_prod_precomp(
256 w: acb_ptr,
257 v: acb_srcptr,
258 prod: *mut acb_dft_prod_struct,
259 prec: mp_limb_signed_t,
260 );
261 pub fn acb_dft_bluestein_precomp(
262 w: acb_ptr,
263 v: acb_srcptr,
264 t: *mut acb_dft_bluestein_struct,
265 prec: mp_limb_signed_t,
266 );
267 pub fn acb_dft_rad2_precomp_inplace_threaded(
268 v: acb_ptr,
269 rad2: *mut acb_dft_rad2_struct,
270 prec: mp_limb_signed_t,
271 );
272 pub fn acb_dft_inverse_rad2_precomp_inplace(
273 v: acb_ptr,
274 rad2: *mut acb_dft_rad2_struct,
275 prec: mp_limb_signed_t,
276 );
277 pub fn acb_dft_inverse_rad2_precomp(
278 w: acb_ptr,
279 v: acb_srcptr,
280 rad2: *mut acb_dft_rad2_struct,
281 prec: mp_limb_signed_t,
282 );
283 pub fn acb_dft_convol_rad2_precomp(
284 w: acb_ptr,
285 f: acb_srcptr,
286 g: acb_srcptr,
287 len: mp_limb_signed_t,
288 arg1: *mut acb_dft_rad2_struct,
289 prec: mp_limb_signed_t,
290 );
291 pub fn _acb_dft_precomp_init(
292 pre: *mut acb_dft_pre_struct,
293 dv: mp_limb_signed_t,
294 z: acb_ptr,
295 dz: mp_limb_signed_t,
296 len: mp_limb_signed_t,
297 prec: mp_limb_signed_t,
298 );
299 pub fn acb_dft_precomp_init(
300 pre: *mut acb_dft_pre_struct,
301 len: mp_limb_signed_t,
302 prec: mp_limb_signed_t,
303 );
304 pub fn acb_dft_precomp_clear(pre: *mut acb_dft_pre_struct);
305 pub fn acb_dft(w: acb_ptr, v: acb_srcptr, len: mp_limb_signed_t, prec: mp_limb_signed_t);
306 pub fn acb_dft_inverse(
307 w: acb_ptr,
308 v: acb_srcptr,
309 len: mp_limb_signed_t,
310 prec: mp_limb_signed_t,
311 );
312 pub fn _acb_dft_steps_prod(
313 m: *mut mp_limb_signed_t,
314 num: mp_limb_signed_t,
315 prec: mp_limb_signed_t,
316 ) -> acb_dft_step_ptr;
317 pub fn acb_dft_prod_clear(t: *mut acb_dft_prod_struct);
318 pub fn _acb_dft_cyc_init_z_fac(
319 t: *mut acb_dft_cyc_struct,
320 fac: n_factor_t,
321 dv: mp_limb_signed_t,
322 z: acb_ptr,
323 dz: mp_limb_signed_t,
324 len: mp_limb_signed_t,
325 prec: mp_limb_signed_t,
326 );
327 pub fn _acb_dft_cyc_init(
328 t: *mut acb_dft_cyc_struct,
329 dv: mp_limb_signed_t,
330 len: mp_limb_signed_t,
331 prec: mp_limb_signed_t,
332 );
333 pub fn acb_dft_cyc_clear(t: *mut acb_dft_cyc_struct);
334 pub fn _acb_dft_naive_init(
335 pol: *mut acb_dft_naive_struct,
336 dv: mp_limb_signed_t,
337 z: acb_ptr,
338 dz: mp_limb_signed_t,
339 len: mp_limb_signed_t,
340 prec: mp_limb_signed_t,
341 );
342 pub fn _acb_dft_rad2_init(
343 t: *mut acb_dft_rad2_struct,
344 dv: mp_limb_signed_t,
345 e: ::std::os::raw::c_int,
346 prec: mp_limb_signed_t,
347 );
348 pub fn _acb_dft_bluestein_init(
349 t: *mut acb_dft_bluestein_struct,
350 dv: mp_limb_signed_t,
351 n: mp_limb_signed_t,
352 prec: mp_limb_signed_t,
353 );
354 pub fn _acb_dft_crt_init(
355 crt: *mut acb_dft_crt_struct,
356 dv: mp_limb_signed_t,
357 len: mp_limb_signed_t,
358 prec: mp_limb_signed_t,
359 );
360 pub fn acb_dft_crt_init(
361 crt: *mut acb_dft_crt_struct,
362 len: mp_limb_signed_t,
363 prec: mp_limb_signed_t,
364 );
365 pub fn acb_dft_crt_clear(crt: *mut acb_dft_crt_struct);
366}