Skip to main content

flint_sys/
acb_dft.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use crate::deps::*;
4use crate::acb_types::*;
5use crate::flint::*;
6use crate::limb_types::*;
7
8
9#[repr(C)]
10pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
11impl<T> __BindgenUnionField<T> {
12    #[inline]
13    pub const fn new() -> Self {
14        __BindgenUnionField(::std::marker::PhantomData)
15    }
16    #[inline]
17    pub unsafe fn as_ref(&self) -> &T {
18        ::std::mem::transmute(self)
19    }
20    #[inline]
21    pub unsafe fn as_mut(&mut self) -> &mut T {
22        ::std::mem::transmute(self)
23    }
24}
25impl<T> ::std::default::Default for __BindgenUnionField<T> {
26    #[inline]
27    fn default() -> Self {
28        Self::new()
29    }
30}
31impl<T> ::std::clone::Clone for __BindgenUnionField<T> {
32    #[inline]
33    fn clone(&self) -> Self {
34        *self
35    }
36}
37impl<T> ::std::marker::Copy for __BindgenUnionField<T> {}
38impl<T> ::std::fmt::Debug for __BindgenUnionField<T> {
39    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
40        fmt.write_str("__BindgenUnionField")
41    }
42}
43impl<T> ::std::hash::Hash for __BindgenUnionField<T> {
44    fn hash<H: ::std::hash::Hasher>(&self, _state: &mut H) {}
45}
46impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> {
47    fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
48        true
49    }
50}
51impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {}
52pub const CRT_MAX: u32 = 15;
53pub const DFT_VERB: u32 = 0;
54#[repr(C)]
55pub struct crt_struct {
56    pub num: libc::c_int,
57    pub n: nmod_t,
58    pub m: [slong; 15usize],
59    pub M: [ulong; 15usize],
60    pub vM: [ulong; 15usize],
61}
62#[allow(clippy::unnecessary_operation, clippy::identity_op)]
63const _: () = {
64    ["Size of crt_struct"][::std::mem::size_of::<crt_struct>() - 392usize];
65    ["Alignment of crt_struct"][::std::mem::align_of::<crt_struct>() - 8usize];
66    ["Offset of field: crt_struct::num"][::std::mem::offset_of!(crt_struct, num) - 0usize];
67    ["Offset of field: crt_struct::n"][::std::mem::offset_of!(crt_struct, n) - 8usize];
68    ["Offset of field: crt_struct::m"][::std::mem::offset_of!(crt_struct, m) - 32usize];
69    ["Offset of field: crt_struct::M"][::std::mem::offset_of!(crt_struct, M) - 152usize];
70    ["Offset of field: crt_struct::vM"][::std::mem::offset_of!(crt_struct, vM) - 272usize];
71};
72impl Default for crt_struct {
73    fn default() -> Self {
74        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
75        unsafe {
76            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
77            s.assume_init()
78        }
79    }
80}
81pub type crt_t = [crt_struct; 1usize];
82pub type acb_dft_step_ptr = *mut acb_dft_step_struct;
83#[repr(C)]
84pub struct acb_dft_cyc_struct {
85    pub n: slong,
86    pub z: acb_ptr,
87    pub zclear: libc::c_int,
88    pub num: slong,
89    pub cyc: acb_dft_step_ptr,
90}
91#[allow(clippy::unnecessary_operation, clippy::identity_op)]
92const _: () = {
93    ["Size of acb_dft_cyc_struct"][::std::mem::size_of::<acb_dft_cyc_struct>() - 40usize];
94    ["Alignment of acb_dft_cyc_struct"][::std::mem::align_of::<acb_dft_cyc_struct>() - 8usize];
95    ["Offset of field: acb_dft_cyc_struct::n"]
96        [::std::mem::offset_of!(acb_dft_cyc_struct, n) - 0usize];
97    ["Offset of field: acb_dft_cyc_struct::z"]
98        [::std::mem::offset_of!(acb_dft_cyc_struct, z) - 8usize];
99    ["Offset of field: acb_dft_cyc_struct::zclear"]
100        [::std::mem::offset_of!(acb_dft_cyc_struct, zclear) - 16usize];
101    ["Offset of field: acb_dft_cyc_struct::num"]
102        [::std::mem::offset_of!(acb_dft_cyc_struct, num) - 24usize];
103    ["Offset of field: acb_dft_cyc_struct::cyc"]
104        [::std::mem::offset_of!(acb_dft_cyc_struct, cyc) - 32usize];
105};
106impl Default for acb_dft_cyc_struct {
107    fn default() -> Self {
108        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
109        unsafe {
110            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
111            s.assume_init()
112        }
113    }
114}
115pub type acb_dft_cyc_t = [acb_dft_cyc_struct; 1usize];
116#[repr(C)]
117pub struct acb_dft_rad2_struct {
118    pub e: libc::c_int,
119    pub n: slong,
120    pub dv: slong,
121    pub nz: slong,
122    pub z: acb_ptr,
123}
124#[allow(clippy::unnecessary_operation, clippy::identity_op)]
125const _: () = {
126    ["Size of acb_dft_rad2_struct"][::std::mem::size_of::<acb_dft_rad2_struct>() - 40usize];
127    ["Alignment of acb_dft_rad2_struct"][::std::mem::align_of::<acb_dft_rad2_struct>() - 8usize];
128    ["Offset of field: acb_dft_rad2_struct::e"]
129        [::std::mem::offset_of!(acb_dft_rad2_struct, e) - 0usize];
130    ["Offset of field: acb_dft_rad2_struct::n"]
131        [::std::mem::offset_of!(acb_dft_rad2_struct, n) - 8usize];
132    ["Offset of field: acb_dft_rad2_struct::dv"]
133        [::std::mem::offset_of!(acb_dft_rad2_struct, dv) - 16usize];
134    ["Offset of field: acb_dft_rad2_struct::nz"]
135        [::std::mem::offset_of!(acb_dft_rad2_struct, nz) - 24usize];
136    ["Offset of field: acb_dft_rad2_struct::z"]
137        [::std::mem::offset_of!(acb_dft_rad2_struct, z) - 32usize];
138};
139impl Default for acb_dft_rad2_struct {
140    fn default() -> Self {
141        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
142        unsafe {
143            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
144            s.assume_init()
145        }
146    }
147}
148pub type acb_dft_rad2_t = [acb_dft_rad2_struct; 1usize];
149#[repr(C)]
150pub struct acb_dft_bluestein_struct {
151    pub n: slong,
152    pub dv: slong,
153    pub z: acb_ptr,
154    pub g: acb_ptr,
155    pub rad2: acb_dft_rad2_t,
156}
157#[allow(clippy::unnecessary_operation, clippy::identity_op)]
158const _: () = {
159    ["Size of acb_dft_bluestein_struct"]
160        [::std::mem::size_of::<acb_dft_bluestein_struct>() - 72usize];
161    ["Alignment of acb_dft_bluestein_struct"]
162        [::std::mem::align_of::<acb_dft_bluestein_struct>() - 8usize];
163    ["Offset of field: acb_dft_bluestein_struct::n"]
164        [::std::mem::offset_of!(acb_dft_bluestein_struct, n) - 0usize];
165    ["Offset of field: acb_dft_bluestein_struct::dv"]
166        [::std::mem::offset_of!(acb_dft_bluestein_struct, dv) - 8usize];
167    ["Offset of field: acb_dft_bluestein_struct::z"]
168        [::std::mem::offset_of!(acb_dft_bluestein_struct, z) - 16usize];
169    ["Offset of field: acb_dft_bluestein_struct::g"]
170        [::std::mem::offset_of!(acb_dft_bluestein_struct, g) - 24usize];
171    ["Offset of field: acb_dft_bluestein_struct::rad2"]
172        [::std::mem::offset_of!(acb_dft_bluestein_struct, rad2) - 32usize];
173};
174impl Default for acb_dft_bluestein_struct {
175    fn default() -> Self {
176        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
177        unsafe {
178            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
179            s.assume_init()
180        }
181    }
182}
183pub type acb_dft_bluestein_t = [acb_dft_bluestein_struct; 1usize];
184#[repr(C)]
185pub struct acb_dft_prod_struct {
186    pub n: slong,
187    pub num: slong,
188    pub cyc: acb_dft_step_ptr,
189}
190#[allow(clippy::unnecessary_operation, clippy::identity_op)]
191const _: () = {
192    ["Size of acb_dft_prod_struct"][::std::mem::size_of::<acb_dft_prod_struct>() - 24usize];
193    ["Alignment of acb_dft_prod_struct"][::std::mem::align_of::<acb_dft_prod_struct>() - 8usize];
194    ["Offset of field: acb_dft_prod_struct::n"]
195        [::std::mem::offset_of!(acb_dft_prod_struct, n) - 0usize];
196    ["Offset of field: acb_dft_prod_struct::num"]
197        [::std::mem::offset_of!(acb_dft_prod_struct, num) - 8usize];
198    ["Offset of field: acb_dft_prod_struct::cyc"]
199        [::std::mem::offset_of!(acb_dft_prod_struct, cyc) - 16usize];
200};
201impl Default for acb_dft_prod_struct {
202    fn default() -> Self {
203        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
204        unsafe {
205            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
206            s.assume_init()
207        }
208    }
209}
210pub type acb_dft_prod_t = [acb_dft_prod_struct; 1usize];
211#[repr(C)]
212pub struct acb_dft_crt_struct {
213    pub n: slong,
214    pub c: crt_t,
215    pub dv: slong,
216    pub cyc: acb_dft_step_ptr,
217}
218#[allow(clippy::unnecessary_operation, clippy::identity_op)]
219const _: () = {
220    ["Size of acb_dft_crt_struct"][::std::mem::size_of::<acb_dft_crt_struct>() - 416usize];
221    ["Alignment of acb_dft_crt_struct"][::std::mem::align_of::<acb_dft_crt_struct>() - 8usize];
222    ["Offset of field: acb_dft_crt_struct::n"]
223        [::std::mem::offset_of!(acb_dft_crt_struct, n) - 0usize];
224    ["Offset of field: acb_dft_crt_struct::c"]
225        [::std::mem::offset_of!(acb_dft_crt_struct, c) - 8usize];
226    ["Offset of field: acb_dft_crt_struct::dv"]
227        [::std::mem::offset_of!(acb_dft_crt_struct, dv) - 400usize];
228    ["Offset of field: acb_dft_crt_struct::cyc"]
229        [::std::mem::offset_of!(acb_dft_crt_struct, cyc) - 408usize];
230};
231impl Default for acb_dft_crt_struct {
232    fn default() -> Self {
233        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
234        unsafe {
235            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
236            s.assume_init()
237        }
238    }
239}
240pub type acb_dft_crt_t = [acb_dft_crt_struct; 1usize];
241#[repr(C)]
242pub struct acb_dft_naive_struct {
243    pub n: slong,
244    pub dv: slong,
245    pub zclear: libc::c_int,
246    pub z: acb_ptr,
247    pub dz: slong,
248}
249#[allow(clippy::unnecessary_operation, clippy::identity_op)]
250const _: () = {
251    ["Size of acb_dft_naive_struct"][::std::mem::size_of::<acb_dft_naive_struct>() - 40usize];
252    ["Alignment of acb_dft_naive_struct"][::std::mem::align_of::<acb_dft_naive_struct>() - 8usize];
253    ["Offset of field: acb_dft_naive_struct::n"]
254        [::std::mem::offset_of!(acb_dft_naive_struct, n) - 0usize];
255    ["Offset of field: acb_dft_naive_struct::dv"]
256        [::std::mem::offset_of!(acb_dft_naive_struct, dv) - 8usize];
257    ["Offset of field: acb_dft_naive_struct::zclear"]
258        [::std::mem::offset_of!(acb_dft_naive_struct, zclear) - 16usize];
259    ["Offset of field: acb_dft_naive_struct::z"]
260        [::std::mem::offset_of!(acb_dft_naive_struct, z) - 24usize];
261    ["Offset of field: acb_dft_naive_struct::dz"]
262        [::std::mem::offset_of!(acb_dft_naive_struct, dz) - 32usize];
263};
264impl Default for acb_dft_naive_struct {
265    fn default() -> Self {
266        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
267        unsafe {
268            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
269            s.assume_init()
270        }
271    }
272}
273pub type acb_dft_naive_t = [acb_dft_naive_struct; 1usize];
274#[repr(C)]
275pub struct acb_dft_pre_struct {
276    pub n: slong,
277    pub type_: libc::c_int,
278    pub t: acb_dft_pre_struct__bindgen_ty_1,
279}
280#[repr(C)]
281pub struct acb_dft_pre_struct__bindgen_ty_1 {
282    pub rad2: __BindgenUnionField<acb_dft_rad2_t>,
283    pub cyc: __BindgenUnionField<acb_dft_cyc_t>,
284    pub prod: __BindgenUnionField<acb_dft_prod_t>,
285    pub crt: __BindgenUnionField<acb_dft_crt_t>,
286    pub naive: __BindgenUnionField<acb_dft_naive_t>,
287    pub bluestein: __BindgenUnionField<acb_dft_bluestein_t>,
288    pub bindgen_union_field: [u64; 52usize],
289}
290#[allow(clippy::unnecessary_operation, clippy::identity_op)]
291const _: () = {
292    ["Size of acb_dft_pre_struct__bindgen_ty_1"]
293        [::std::mem::size_of::<acb_dft_pre_struct__bindgen_ty_1>() - 416usize];
294    ["Alignment of acb_dft_pre_struct__bindgen_ty_1"]
295        [::std::mem::align_of::<acb_dft_pre_struct__bindgen_ty_1>() - 8usize];
296    ["Offset of field: acb_dft_pre_struct__bindgen_ty_1::rad2"]
297        [::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, rad2) - 0usize];
298    ["Offset of field: acb_dft_pre_struct__bindgen_ty_1::cyc"]
299        [::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, cyc) - 0usize];
300    ["Offset of field: acb_dft_pre_struct__bindgen_ty_1::prod"]
301        [::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, prod) - 0usize];
302    ["Offset of field: acb_dft_pre_struct__bindgen_ty_1::crt"]
303        [::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, crt) - 0usize];
304    ["Offset of field: acb_dft_pre_struct__bindgen_ty_1::naive"]
305        [::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, naive) - 0usize];
306    ["Offset of field: acb_dft_pre_struct__bindgen_ty_1::bluestein"]
307        [::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, bluestein) - 0usize];
308};
309impl Default for acb_dft_pre_struct__bindgen_ty_1 {
310    fn default() -> Self {
311        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
312        unsafe {
313            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
314            s.assume_init()
315        }
316    }
317}
318#[allow(clippy::unnecessary_operation, clippy::identity_op)]
319const _: () = {
320    ["Size of acb_dft_pre_struct"][::std::mem::size_of::<acb_dft_pre_struct>() - 432usize];
321    ["Alignment of acb_dft_pre_struct"][::std::mem::align_of::<acb_dft_pre_struct>() - 8usize];
322    ["Offset of field: acb_dft_pre_struct::n"]
323        [::std::mem::offset_of!(acb_dft_pre_struct, n) - 0usize];
324    ["Offset of field: acb_dft_pre_struct::type_"]
325        [::std::mem::offset_of!(acb_dft_pre_struct, type_) - 8usize];
326    ["Offset of field: acb_dft_pre_struct::t"]
327        [::std::mem::offset_of!(acb_dft_pre_struct, t) - 16usize];
328};
329impl Default for acb_dft_pre_struct {
330    fn default() -> Self {
331        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
332        unsafe {
333            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
334            s.assume_init()
335        }
336    }
337}
338pub type acb_dft_pre_t = [acb_dft_pre_struct; 1usize];
339#[repr(C)]
340pub struct acb_dft_step_struct {
341    pub m: slong,
342    pub M: slong,
343    pub dv: slong,
344    pub z: acb_srcptr,
345    pub dz: slong,
346    pub pre: acb_dft_pre_t,
347}
348#[allow(clippy::unnecessary_operation, clippy::identity_op)]
349const _: () = {
350    ["Size of acb_dft_step_struct"][::std::mem::size_of::<acb_dft_step_struct>() - 472usize];
351    ["Alignment of acb_dft_step_struct"][::std::mem::align_of::<acb_dft_step_struct>() - 8usize];
352    ["Offset of field: acb_dft_step_struct::m"]
353        [::std::mem::offset_of!(acb_dft_step_struct, m) - 0usize];
354    ["Offset of field: acb_dft_step_struct::M"]
355        [::std::mem::offset_of!(acb_dft_step_struct, M) - 8usize];
356    ["Offset of field: acb_dft_step_struct::dv"]
357        [::std::mem::offset_of!(acb_dft_step_struct, dv) - 16usize];
358    ["Offset of field: acb_dft_step_struct::z"]
359        [::std::mem::offset_of!(acb_dft_step_struct, z) - 24usize];
360    ["Offset of field: acb_dft_step_struct::dz"]
361        [::std::mem::offset_of!(acb_dft_step_struct, dz) - 32usize];
362    ["Offset of field: acb_dft_step_struct::pre"]
363        [::std::mem::offset_of!(acb_dft_step_struct, pre) - 40usize];
364};
365impl Default for acb_dft_step_struct {
366    fn default() -> Self {
367        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
368        unsafe {
369            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
370            s.assume_init()
371        }
372    }
373}
374pub const DFT_NAIVE: _bindgen_ty_2 = 0;
375pub const DFT_CYC: _bindgen_ty_2 = 1;
376pub const DFT_PROD: _bindgen_ty_2 = 2;
377pub const DFT_CRT: _bindgen_ty_2 = 3;
378pub const DFT_RAD2: _bindgen_ty_2 = 4;
379pub const DFT_CONV: _bindgen_ty_2 = 5;
380pub type _bindgen_ty_2 = libc::c_uint;
381extern "C" {
382    pub fn _acb_dft_naive(
383        w: acb_ptr,
384        v: acb_srcptr,
385        dv: slong,
386        z: acb_srcptr,
387        dz: slong,
388        len: slong,
389        prec: slong,
390    );
391    pub fn acb_dft_naive(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
392    pub fn acb_dft_crt(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
393    pub fn acb_dft_cyc(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
394    pub fn acb_dft_inverse_cyc(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
395    pub fn acb_dft_rad2_inplace(v: acb_ptr, e: libc::c_int, prec: slong);
396    pub fn acb_dft_rad2(w: acb_ptr, v: acb_srcptr, e: libc::c_int, prec: slong);
397    pub fn acb_dft_bluestein(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
398    pub fn acb_dft_prod(w: acb_ptr, v: acb_srcptr, cyc: *mut slong, num: slong, prec: slong);
399    pub fn acb_dft_rad2_inplace_threaded(v: acb_ptr, e: libc::c_int, prec: slong);
400    pub fn acb_dft_convol_naive(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
401    pub fn acb_dft_convol_dft(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
402    pub fn acb_dft_convol_rad2(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
403    pub fn acb_dft_convol_mullow(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
404    pub fn acb_dft_convol(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
405    pub fn crt_init(c: *mut crt_struct, n: ulong);
406    pub fn crt_decomp(y: acb_ptr, x: acb_srcptr, dx: slong, c: *const crt_struct, len: ulong);
407    pub fn crt_recomp(y: acb_ptr, x: acb_srcptr, c: *const crt_struct, len: ulong);
408    pub fn acb_dft_step(w: acb_ptr, v: acb_srcptr, cyc: acb_dft_step_ptr, num: slong, prec: slong);
409    pub fn acb_dft_precomp(w: acb_ptr, v: acb_srcptr, pre: *const acb_dft_pre_struct, prec: slong);
410    pub fn acb_dft_inverse_precomp(
411        w: acb_ptr,
412        v: acb_srcptr,
413        pre: *const acb_dft_pre_struct,
414        prec: slong,
415    );
416    pub fn acb_dft_naive_precomp(
417        w: acb_ptr,
418        v: acb_srcptr,
419        pol: *const acb_dft_naive_struct,
420        prec: slong,
421    );
422    pub fn acb_dft_cyc_precomp(
423        w: acb_ptr,
424        v: acb_srcptr,
425        cyc: *const acb_dft_cyc_struct,
426        prec: slong,
427    );
428    pub fn acb_dft_rad2_precomp_inplace(v: acb_ptr, rad2: *const acb_dft_rad2_struct, prec: slong);
429    pub fn acb_dft_rad2_precomp(
430        w: acb_ptr,
431        v: acb_srcptr,
432        rad2: *const acb_dft_rad2_struct,
433        prec: slong,
434    );
435    pub fn acb_dft_crt_precomp(
436        w: acb_ptr,
437        v: acb_srcptr,
438        crt: *const acb_dft_crt_struct,
439        prec: slong,
440    );
441    pub fn acb_dft_prod_precomp(
442        w: acb_ptr,
443        v: acb_srcptr,
444        prod: *const acb_dft_prod_struct,
445        prec: slong,
446    );
447    pub fn acb_dft_bluestein_precomp(
448        w: acb_ptr,
449        v: acb_srcptr,
450        t: *const acb_dft_bluestein_struct,
451        prec: slong,
452    );
453    pub fn acb_dft_rad2_precomp_inplace_threaded(
454        v: acb_ptr,
455        rad2: *const acb_dft_rad2_struct,
456        prec: slong,
457    );
458    pub fn acb_dft_inverse_rad2_precomp_inplace(
459        v: acb_ptr,
460        rad2: *const acb_dft_rad2_struct,
461        prec: slong,
462    );
463    pub fn acb_dft_inverse_rad2_precomp(
464        w: acb_ptr,
465        v: acb_srcptr,
466        rad2: *const acb_dft_rad2_struct,
467        prec: slong,
468    );
469    pub fn acb_dft_convol_rad2_precomp(
470        w: acb_ptr,
471        f: acb_srcptr,
472        g: acb_srcptr,
473        len: slong,
474        rad2: *const acb_dft_rad2_struct,
475        prec: slong,
476    );
477    pub fn _acb_dft_precomp_init(
478        pre: *mut acb_dft_pre_struct,
479        dv: slong,
480        z: acb_ptr,
481        dz: slong,
482        len: slong,
483        prec: slong,
484    );
485    pub fn acb_dft_precomp_init(pre: *mut acb_dft_pre_struct, len: slong, prec: slong);
486    pub fn acb_dft_precomp_clear(pre: *mut acb_dft_pre_struct);
487    pub fn acb_dft(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
488    pub fn acb_dft_inverse(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
489    pub fn _acb_dft_steps_prod(m: *mut slong, num: slong, prec: slong) -> acb_dft_step_ptr;
490    #[link_name = "acb_dft_prod_init__extern"]
491    pub fn acb_dft_prod_init(t: *mut acb_dft_prod_struct, cyc: *mut slong, num: slong, prec: slong);
492    pub fn acb_dft_prod_clear(t: *mut acb_dft_prod_struct);
493    pub fn _acb_dft_cyc_init_z_fac(
494        t: *mut acb_dft_cyc_struct,
495        fac: n_factor_t,
496        dv: slong,
497        z: acb_ptr,
498        dz: slong,
499        len: slong,
500        prec: slong,
501    );
502    pub fn _acb_dft_cyc_init(t: *mut acb_dft_cyc_struct, dv: slong, len: slong, prec: slong);
503    #[link_name = "acb_dft_cyc_init__extern"]
504    pub fn acb_dft_cyc_init(t: *mut acb_dft_cyc_struct, len: slong, prec: slong);
505    pub fn acb_dft_cyc_clear(t: *mut acb_dft_cyc_struct);
506    pub fn _acb_dft_naive_init(
507        pol: *mut acb_dft_naive_struct,
508        dv: slong,
509        z: acb_ptr,
510        dz: slong,
511        len: slong,
512        prec: slong,
513    );
514    #[link_name = "acb_dft_naive_init__extern"]
515    pub fn acb_dft_naive_init(pol: *mut acb_dft_naive_struct, len: slong, prec: slong);
516    #[link_name = "acb_dft_naive_clear__extern"]
517    pub fn acb_dft_naive_clear(pol: *mut acb_dft_naive_struct);
518    pub fn _acb_dft_rad2_init(t: *mut acb_dft_rad2_struct, dv: slong, e: libc::c_int, prec: slong);
519    #[link_name = "acb_dft_rad2_init__extern"]
520    pub fn acb_dft_rad2_init(t: *mut acb_dft_rad2_struct, e: libc::c_int, prec: slong);
521    #[link_name = "acb_dft_rad2_clear__extern"]
522    pub fn acb_dft_rad2_clear(t: *mut acb_dft_rad2_struct);
523    pub fn _acb_dft_bluestein_init(
524        t: *mut acb_dft_bluestein_struct,
525        dv: slong,
526        n: slong,
527        prec: slong,
528    );
529    #[link_name = "acb_dft_bluestein_init__extern"]
530    pub fn acb_dft_bluestein_init(t: *mut acb_dft_bluestein_struct, n: slong, prec: slong);
531    #[link_name = "acb_dft_bluestein_clear__extern"]
532    pub fn acb_dft_bluestein_clear(t: *mut acb_dft_bluestein_struct);
533    pub fn _acb_dft_crt_init(crt: *mut acb_dft_crt_struct, dv: slong, len: slong, prec: slong);
534    pub fn acb_dft_crt_init(crt: *mut acb_dft_crt_struct, len: slong, prec: slong);
535    pub fn acb_dft_crt_clear(crt: *mut acb_dft_crt_struct);
536    #[link_name = "acb_swap_ri__extern"]
537    pub fn acb_swap_ri(x: *mut acb_struct);
538    #[link_name = "acb_vec_swap_ri__extern"]
539    pub fn acb_vec_swap_ri(v: acb_ptr, len: slong);
540    #[link_name = "_acb_vec_kronecker_mul__extern"]
541    pub fn _acb_vec_kronecker_mul(
542        z: acb_ptr,
543        x: acb_srcptr,
544        y: acb_srcptr,
545        len: slong,
546        prec: slong,
547    );
548    #[link_name = "_acb_vec_kronecker_mul_step__extern"]
549    pub fn _acb_vec_kronecker_mul_step(
550        z: acb_ptr,
551        x: acb_srcptr,
552        y: acb_srcptr,
553        step: slong,
554        len: slong,
555        prec: slong,
556    );
557}