use crate::deps::*;
use crate::acb_types::*;
use crate::flint::*;
use crate::limb_types::*;
#[repr(C)]
pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
impl<T> __BindgenUnionField<T> {
#[inline]
pub const fn new() -> Self {
__BindgenUnionField(::std::marker::PhantomData)
}
#[inline]
pub unsafe fn as_ref(&self) -> &T {
::std::mem::transmute(self)
}
#[inline]
pub unsafe fn as_mut(&mut self) -> &mut T {
::std::mem::transmute(self)
}
}
impl<T> ::std::default::Default for __BindgenUnionField<T> {
#[inline]
fn default() -> Self {
Self::new()
}
}
impl<T> ::std::clone::Clone for __BindgenUnionField<T> {
#[inline]
fn clone(&self) -> Self {
*self
}
}
impl<T> ::std::marker::Copy for __BindgenUnionField<T> {}
impl<T> ::std::fmt::Debug for __BindgenUnionField<T> {
fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
fmt.write_str("__BindgenUnionField")
}
}
impl<T> ::std::hash::Hash for __BindgenUnionField<T> {
fn hash<H: ::std::hash::Hasher>(&self, _state: &mut H) {}
}
impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> {
fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
true
}
}
impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {}
pub const CRT_MAX: u32 = 15;
pub const DFT_VERB: u32 = 0;
#[repr(C)]
pub struct crt_struct {
pub num: libc::c_int,
pub n: nmod_t,
pub m: [slong; 15usize],
pub M: [ulong; 15usize],
pub vM: [ulong; 15usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of crt_struct"][::std::mem::size_of::<crt_struct>() - 392usize];
["Alignment of crt_struct"][::std::mem::align_of::<crt_struct>() - 8usize];
["Offset of field: crt_struct::num"][::std::mem::offset_of!(crt_struct, num) - 0usize];
["Offset of field: crt_struct::n"][::std::mem::offset_of!(crt_struct, n) - 8usize];
["Offset of field: crt_struct::m"][::std::mem::offset_of!(crt_struct, m) - 32usize];
["Offset of field: crt_struct::M"][::std::mem::offset_of!(crt_struct, M) - 152usize];
["Offset of field: crt_struct::vM"][::std::mem::offset_of!(crt_struct, vM) - 272usize];
};
impl Default for crt_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type crt_t = [crt_struct; 1usize];
pub type acb_dft_step_ptr = *mut acb_dft_step_struct;
#[repr(C)]
pub struct acb_dft_cyc_struct {
pub n: slong,
pub z: acb_ptr,
pub zclear: libc::c_int,
pub num: slong,
pub cyc: acb_dft_step_ptr,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_cyc_struct"][::std::mem::size_of::<acb_dft_cyc_struct>() - 40usize];
["Alignment of acb_dft_cyc_struct"][::std::mem::align_of::<acb_dft_cyc_struct>() - 8usize];
["Offset of field: acb_dft_cyc_struct::n"]
[::std::mem::offset_of!(acb_dft_cyc_struct, n) - 0usize];
["Offset of field: acb_dft_cyc_struct::z"]
[::std::mem::offset_of!(acb_dft_cyc_struct, z) - 8usize];
["Offset of field: acb_dft_cyc_struct::zclear"]
[::std::mem::offset_of!(acb_dft_cyc_struct, zclear) - 16usize];
["Offset of field: acb_dft_cyc_struct::num"]
[::std::mem::offset_of!(acb_dft_cyc_struct, num) - 24usize];
["Offset of field: acb_dft_cyc_struct::cyc"]
[::std::mem::offset_of!(acb_dft_cyc_struct, cyc) - 32usize];
};
impl Default for acb_dft_cyc_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type acb_dft_cyc_t = [acb_dft_cyc_struct; 1usize];
#[repr(C)]
pub struct acb_dft_rad2_struct {
pub e: libc::c_int,
pub n: slong,
pub dv: slong,
pub nz: slong,
pub z: acb_ptr,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_rad2_struct"][::std::mem::size_of::<acb_dft_rad2_struct>() - 40usize];
["Alignment of acb_dft_rad2_struct"][::std::mem::align_of::<acb_dft_rad2_struct>() - 8usize];
["Offset of field: acb_dft_rad2_struct::e"]
[::std::mem::offset_of!(acb_dft_rad2_struct, e) - 0usize];
["Offset of field: acb_dft_rad2_struct::n"]
[::std::mem::offset_of!(acb_dft_rad2_struct, n) - 8usize];
["Offset of field: acb_dft_rad2_struct::dv"]
[::std::mem::offset_of!(acb_dft_rad2_struct, dv) - 16usize];
["Offset of field: acb_dft_rad2_struct::nz"]
[::std::mem::offset_of!(acb_dft_rad2_struct, nz) - 24usize];
["Offset of field: acb_dft_rad2_struct::z"]
[::std::mem::offset_of!(acb_dft_rad2_struct, z) - 32usize];
};
impl Default for acb_dft_rad2_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type acb_dft_rad2_t = [acb_dft_rad2_struct; 1usize];
#[repr(C)]
pub struct acb_dft_bluestein_struct {
pub n: slong,
pub dv: slong,
pub z: acb_ptr,
pub g: acb_ptr,
pub rad2: acb_dft_rad2_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_bluestein_struct"]
[::std::mem::size_of::<acb_dft_bluestein_struct>() - 72usize];
["Alignment of acb_dft_bluestein_struct"]
[::std::mem::align_of::<acb_dft_bluestein_struct>() - 8usize];
["Offset of field: acb_dft_bluestein_struct::n"]
[::std::mem::offset_of!(acb_dft_bluestein_struct, n) - 0usize];
["Offset of field: acb_dft_bluestein_struct::dv"]
[::std::mem::offset_of!(acb_dft_bluestein_struct, dv) - 8usize];
["Offset of field: acb_dft_bluestein_struct::z"]
[::std::mem::offset_of!(acb_dft_bluestein_struct, z) - 16usize];
["Offset of field: acb_dft_bluestein_struct::g"]
[::std::mem::offset_of!(acb_dft_bluestein_struct, g) - 24usize];
["Offset of field: acb_dft_bluestein_struct::rad2"]
[::std::mem::offset_of!(acb_dft_bluestein_struct, rad2) - 32usize];
};
impl Default for acb_dft_bluestein_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type acb_dft_bluestein_t = [acb_dft_bluestein_struct; 1usize];
#[repr(C)]
pub struct acb_dft_prod_struct {
pub n: slong,
pub num: slong,
pub cyc: acb_dft_step_ptr,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_prod_struct"][::std::mem::size_of::<acb_dft_prod_struct>() - 24usize];
["Alignment of acb_dft_prod_struct"][::std::mem::align_of::<acb_dft_prod_struct>() - 8usize];
["Offset of field: acb_dft_prod_struct::n"]
[::std::mem::offset_of!(acb_dft_prod_struct, n) - 0usize];
["Offset of field: acb_dft_prod_struct::num"]
[::std::mem::offset_of!(acb_dft_prod_struct, num) - 8usize];
["Offset of field: acb_dft_prod_struct::cyc"]
[::std::mem::offset_of!(acb_dft_prod_struct, cyc) - 16usize];
};
impl Default for acb_dft_prod_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type acb_dft_prod_t = [acb_dft_prod_struct; 1usize];
#[repr(C)]
pub struct acb_dft_crt_struct {
pub n: slong,
pub c: crt_t,
pub dv: slong,
pub cyc: acb_dft_step_ptr,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_crt_struct"][::std::mem::size_of::<acb_dft_crt_struct>() - 416usize];
["Alignment of acb_dft_crt_struct"][::std::mem::align_of::<acb_dft_crt_struct>() - 8usize];
["Offset of field: acb_dft_crt_struct::n"]
[::std::mem::offset_of!(acb_dft_crt_struct, n) - 0usize];
["Offset of field: acb_dft_crt_struct::c"]
[::std::mem::offset_of!(acb_dft_crt_struct, c) - 8usize];
["Offset of field: acb_dft_crt_struct::dv"]
[::std::mem::offset_of!(acb_dft_crt_struct, dv) - 400usize];
["Offset of field: acb_dft_crt_struct::cyc"]
[::std::mem::offset_of!(acb_dft_crt_struct, cyc) - 408usize];
};
impl Default for acb_dft_crt_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type acb_dft_crt_t = [acb_dft_crt_struct; 1usize];
#[repr(C)]
pub struct acb_dft_naive_struct {
pub n: slong,
pub dv: slong,
pub zclear: libc::c_int,
pub z: acb_ptr,
pub dz: slong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_naive_struct"][::std::mem::size_of::<acb_dft_naive_struct>() - 40usize];
["Alignment of acb_dft_naive_struct"][::std::mem::align_of::<acb_dft_naive_struct>() - 8usize];
["Offset of field: acb_dft_naive_struct::n"]
[::std::mem::offset_of!(acb_dft_naive_struct, n) - 0usize];
["Offset of field: acb_dft_naive_struct::dv"]
[::std::mem::offset_of!(acb_dft_naive_struct, dv) - 8usize];
["Offset of field: acb_dft_naive_struct::zclear"]
[::std::mem::offset_of!(acb_dft_naive_struct, zclear) - 16usize];
["Offset of field: acb_dft_naive_struct::z"]
[::std::mem::offset_of!(acb_dft_naive_struct, z) - 24usize];
["Offset of field: acb_dft_naive_struct::dz"]
[::std::mem::offset_of!(acb_dft_naive_struct, dz) - 32usize];
};
impl Default for acb_dft_naive_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type acb_dft_naive_t = [acb_dft_naive_struct; 1usize];
#[repr(C)]
pub struct acb_dft_pre_struct {
pub n: slong,
pub type_: libc::c_int,
pub t: acb_dft_pre_struct__bindgen_ty_1,
}
#[repr(C)]
pub struct acb_dft_pre_struct__bindgen_ty_1 {
pub rad2: __BindgenUnionField<acb_dft_rad2_t>,
pub cyc: __BindgenUnionField<acb_dft_cyc_t>,
pub prod: __BindgenUnionField<acb_dft_prod_t>,
pub crt: __BindgenUnionField<acb_dft_crt_t>,
pub naive: __BindgenUnionField<acb_dft_naive_t>,
pub bluestein: __BindgenUnionField<acb_dft_bluestein_t>,
pub bindgen_union_field: [u64; 52usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_pre_struct__bindgen_ty_1"]
[::std::mem::size_of::<acb_dft_pre_struct__bindgen_ty_1>() - 416usize];
["Alignment of acb_dft_pre_struct__bindgen_ty_1"]
[::std::mem::align_of::<acb_dft_pre_struct__bindgen_ty_1>() - 8usize];
["Offset of field: acb_dft_pre_struct__bindgen_ty_1::rad2"]
[::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, rad2) - 0usize];
["Offset of field: acb_dft_pre_struct__bindgen_ty_1::cyc"]
[::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, cyc) - 0usize];
["Offset of field: acb_dft_pre_struct__bindgen_ty_1::prod"]
[::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, prod) - 0usize];
["Offset of field: acb_dft_pre_struct__bindgen_ty_1::crt"]
[::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, crt) - 0usize];
["Offset of field: acb_dft_pre_struct__bindgen_ty_1::naive"]
[::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, naive) - 0usize];
["Offset of field: acb_dft_pre_struct__bindgen_ty_1::bluestein"]
[::std::mem::offset_of!(acb_dft_pre_struct__bindgen_ty_1, bluestein) - 0usize];
};
impl Default for acb_dft_pre_struct__bindgen_ty_1 {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_pre_struct"][::std::mem::size_of::<acb_dft_pre_struct>() - 432usize];
["Alignment of acb_dft_pre_struct"][::std::mem::align_of::<acb_dft_pre_struct>() - 8usize];
["Offset of field: acb_dft_pre_struct::n"]
[::std::mem::offset_of!(acb_dft_pre_struct, n) - 0usize];
["Offset of field: acb_dft_pre_struct::type_"]
[::std::mem::offset_of!(acb_dft_pre_struct, type_) - 8usize];
["Offset of field: acb_dft_pre_struct::t"]
[::std::mem::offset_of!(acb_dft_pre_struct, t) - 16usize];
};
impl Default for acb_dft_pre_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type acb_dft_pre_t = [acb_dft_pre_struct; 1usize];
#[repr(C)]
pub struct acb_dft_step_struct {
pub m: slong,
pub M: slong,
pub dv: slong,
pub z: acb_srcptr,
pub dz: slong,
pub pre: acb_dft_pre_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of acb_dft_step_struct"][::std::mem::size_of::<acb_dft_step_struct>() - 472usize];
["Alignment of acb_dft_step_struct"][::std::mem::align_of::<acb_dft_step_struct>() - 8usize];
["Offset of field: acb_dft_step_struct::m"]
[::std::mem::offset_of!(acb_dft_step_struct, m) - 0usize];
["Offset of field: acb_dft_step_struct::M"]
[::std::mem::offset_of!(acb_dft_step_struct, M) - 8usize];
["Offset of field: acb_dft_step_struct::dv"]
[::std::mem::offset_of!(acb_dft_step_struct, dv) - 16usize];
["Offset of field: acb_dft_step_struct::z"]
[::std::mem::offset_of!(acb_dft_step_struct, z) - 24usize];
["Offset of field: acb_dft_step_struct::dz"]
[::std::mem::offset_of!(acb_dft_step_struct, dz) - 32usize];
["Offset of field: acb_dft_step_struct::pre"]
[::std::mem::offset_of!(acb_dft_step_struct, pre) - 40usize];
};
impl Default for acb_dft_step_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub const DFT_NAIVE: _bindgen_ty_2 = 0;
pub const DFT_CYC: _bindgen_ty_2 = 1;
pub const DFT_PROD: _bindgen_ty_2 = 2;
pub const DFT_CRT: _bindgen_ty_2 = 3;
pub const DFT_RAD2: _bindgen_ty_2 = 4;
pub const DFT_CONV: _bindgen_ty_2 = 5;
pub type _bindgen_ty_2 = libc::c_uint;
extern "C" {
pub fn _acb_dft_naive(
w: acb_ptr,
v: acb_srcptr,
dv: slong,
z: acb_srcptr,
dz: slong,
len: slong,
prec: slong,
);
pub fn acb_dft_naive(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_crt(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_cyc(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_inverse_cyc(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_rad2_inplace(v: acb_ptr, e: libc::c_int, prec: slong);
pub fn acb_dft_rad2(w: acb_ptr, v: acb_srcptr, e: libc::c_int, prec: slong);
pub fn acb_dft_bluestein(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_prod(w: acb_ptr, v: acb_srcptr, cyc: *mut slong, num: slong, prec: slong);
pub fn acb_dft_rad2_inplace_threaded(v: acb_ptr, e: libc::c_int, prec: slong);
pub fn acb_dft_convol_naive(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_convol_dft(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_convol_rad2(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_convol_mullow(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_convol(w: acb_ptr, f: acb_srcptr, g: acb_srcptr, len: slong, prec: slong);
pub fn crt_init(c: *mut crt_struct, n: ulong);
pub fn crt_decomp(y: acb_ptr, x: acb_srcptr, dx: slong, c: *const crt_struct, len: ulong);
pub fn crt_recomp(y: acb_ptr, x: acb_srcptr, c: *const crt_struct, len: ulong);
pub fn acb_dft_step(w: acb_ptr, v: acb_srcptr, cyc: acb_dft_step_ptr, num: slong, prec: slong);
pub fn acb_dft_precomp(w: acb_ptr, v: acb_srcptr, pre: *const acb_dft_pre_struct, prec: slong);
pub fn acb_dft_inverse_precomp(
w: acb_ptr,
v: acb_srcptr,
pre: *const acb_dft_pre_struct,
prec: slong,
);
pub fn acb_dft_naive_precomp(
w: acb_ptr,
v: acb_srcptr,
pol: *const acb_dft_naive_struct,
prec: slong,
);
pub fn acb_dft_cyc_precomp(
w: acb_ptr,
v: acb_srcptr,
cyc: *const acb_dft_cyc_struct,
prec: slong,
);
pub fn acb_dft_rad2_precomp_inplace(v: acb_ptr, rad2: *const acb_dft_rad2_struct, prec: slong);
pub fn acb_dft_rad2_precomp(
w: acb_ptr,
v: acb_srcptr,
rad2: *const acb_dft_rad2_struct,
prec: slong,
);
pub fn acb_dft_crt_precomp(
w: acb_ptr,
v: acb_srcptr,
crt: *const acb_dft_crt_struct,
prec: slong,
);
pub fn acb_dft_prod_precomp(
w: acb_ptr,
v: acb_srcptr,
prod: *const acb_dft_prod_struct,
prec: slong,
);
pub fn acb_dft_bluestein_precomp(
w: acb_ptr,
v: acb_srcptr,
t: *const acb_dft_bluestein_struct,
prec: slong,
);
pub fn acb_dft_rad2_precomp_inplace_threaded(
v: acb_ptr,
rad2: *const acb_dft_rad2_struct,
prec: slong,
);
pub fn acb_dft_inverse_rad2_precomp_inplace(
v: acb_ptr,
rad2: *const acb_dft_rad2_struct,
prec: slong,
);
pub fn acb_dft_inverse_rad2_precomp(
w: acb_ptr,
v: acb_srcptr,
rad2: *const acb_dft_rad2_struct,
prec: slong,
);
pub fn acb_dft_convol_rad2_precomp(
w: acb_ptr,
f: acb_srcptr,
g: acb_srcptr,
len: slong,
rad2: *const acb_dft_rad2_struct,
prec: slong,
);
pub fn _acb_dft_precomp_init(
pre: *mut acb_dft_pre_struct,
dv: slong,
z: acb_ptr,
dz: slong,
len: slong,
prec: slong,
);
pub fn acb_dft_precomp_init(pre: *mut acb_dft_pre_struct, len: slong, prec: slong);
pub fn acb_dft_precomp_clear(pre: *mut acb_dft_pre_struct);
pub fn acb_dft(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
pub fn acb_dft_inverse(w: acb_ptr, v: acb_srcptr, len: slong, prec: slong);
pub fn _acb_dft_steps_prod(m: *mut slong, num: slong, prec: slong) -> acb_dft_step_ptr;
#[link_name = "acb_dft_prod_init__extern"]
pub fn acb_dft_prod_init(t: *mut acb_dft_prod_struct, cyc: *mut slong, num: slong, prec: slong);
pub fn acb_dft_prod_clear(t: *mut acb_dft_prod_struct);
pub fn _acb_dft_cyc_init_z_fac(
t: *mut acb_dft_cyc_struct,
fac: n_factor_t,
dv: slong,
z: acb_ptr,
dz: slong,
len: slong,
prec: slong,
);
pub fn _acb_dft_cyc_init(t: *mut acb_dft_cyc_struct, dv: slong, len: slong, prec: slong);
#[link_name = "acb_dft_cyc_init__extern"]
pub fn acb_dft_cyc_init(t: *mut acb_dft_cyc_struct, len: slong, prec: slong);
pub fn acb_dft_cyc_clear(t: *mut acb_dft_cyc_struct);
pub fn _acb_dft_naive_init(
pol: *mut acb_dft_naive_struct,
dv: slong,
z: acb_ptr,
dz: slong,
len: slong,
prec: slong,
);
#[link_name = "acb_dft_naive_init__extern"]
pub fn acb_dft_naive_init(pol: *mut acb_dft_naive_struct, len: slong, prec: slong);
#[link_name = "acb_dft_naive_clear__extern"]
pub fn acb_dft_naive_clear(pol: *mut acb_dft_naive_struct);
pub fn _acb_dft_rad2_init(t: *mut acb_dft_rad2_struct, dv: slong, e: libc::c_int, prec: slong);
#[link_name = "acb_dft_rad2_init__extern"]
pub fn acb_dft_rad2_init(t: *mut acb_dft_rad2_struct, e: libc::c_int, prec: slong);
#[link_name = "acb_dft_rad2_clear__extern"]
pub fn acb_dft_rad2_clear(t: *mut acb_dft_rad2_struct);
pub fn _acb_dft_bluestein_init(
t: *mut acb_dft_bluestein_struct,
dv: slong,
n: slong,
prec: slong,
);
#[link_name = "acb_dft_bluestein_init__extern"]
pub fn acb_dft_bluestein_init(t: *mut acb_dft_bluestein_struct, n: slong, prec: slong);
#[link_name = "acb_dft_bluestein_clear__extern"]
pub fn acb_dft_bluestein_clear(t: *mut acb_dft_bluestein_struct);
pub fn _acb_dft_crt_init(crt: *mut acb_dft_crt_struct, dv: slong, len: slong, prec: slong);
pub fn acb_dft_crt_init(crt: *mut acb_dft_crt_struct, len: slong, prec: slong);
pub fn acb_dft_crt_clear(crt: *mut acb_dft_crt_struct);
#[link_name = "acb_swap_ri__extern"]
pub fn acb_swap_ri(x: *mut acb_struct);
#[link_name = "acb_vec_swap_ri__extern"]
pub fn acb_vec_swap_ri(v: acb_ptr, len: slong);
#[link_name = "_acb_vec_kronecker_mul__extern"]
pub fn _acb_vec_kronecker_mul(
z: acb_ptr,
x: acb_srcptr,
y: acb_srcptr,
len: slong,
prec: slong,
);
#[link_name = "_acb_vec_kronecker_mul_step__extern"]
pub fn _acb_vec_kronecker_mul_step(
z: acb_ptr,
x: acb_srcptr,
y: acb_srcptr,
step: slong,
len: slong,
prec: slong,
);
}