Skip to main content

flint_sys/
aprcl.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use crate::deps::*;
4use crate::flint::*;
5use crate::fmpz_mod_types::*;
6use crate::fmpz_types::*;
7use crate::limb_types::*;
8
9
10pub const SQUARING_SPACE: u32 = 70;
11#[repr(C)]
12pub struct _aprcl_config {
13    pub R: ulong,
14    pub s: fmpz_t,
15    pub rs: n_factor_t,
16    pub qs: fmpz_factor_t,
17    pub qs_used: *mut libc::c_int,
18}
19#[allow(clippy::unnecessary_operation, clippy::identity_op)]
20const _: () = {
21    ["Size of _aprcl_config"][::std::mem::size_of::<_aprcl_config>() - 248usize];
22    ["Alignment of _aprcl_config"][::std::mem::align_of::<_aprcl_config>() - 8usize];
23    ["Offset of field: _aprcl_config::R"][::std::mem::offset_of!(_aprcl_config, R) - 0usize];
24    ["Offset of field: _aprcl_config::s"][::std::mem::offset_of!(_aprcl_config, s) - 8usize];
25    ["Offset of field: _aprcl_config::rs"][::std::mem::offset_of!(_aprcl_config, rs) - 16usize];
26    ["Offset of field: _aprcl_config::qs"][::std::mem::offset_of!(_aprcl_config, qs) - 200usize];
27    ["Offset of field: _aprcl_config::qs_used"]
28        [::std::mem::offset_of!(_aprcl_config, qs_used) - 240usize];
29};
30impl Default for _aprcl_config {
31    fn default() -> Self {
32        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
33        unsafe {
34            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
35            s.assume_init()
36        }
37    }
38}
39pub type aprcl_config = [_aprcl_config; 1usize];
40#[repr(C)]
41pub struct _unity_zpq {
42    pub polys: *mut fmpz_mod_poly_t,
43    pub p: ulong,
44    pub q: ulong,
45    pub ctx: fmpz_mod_ctx_t,
46}
47#[allow(clippy::unnecessary_operation, clippy::identity_op)]
48const _: () = {
49    ["Size of _unity_zpq"][::std::mem::size_of::<_unity_zpq>() - 136usize];
50    ["Alignment of _unity_zpq"][::std::mem::align_of::<_unity_zpq>() - 8usize];
51    ["Offset of field: _unity_zpq::polys"][::std::mem::offset_of!(_unity_zpq, polys) - 0usize];
52    ["Offset of field: _unity_zpq::p"][::std::mem::offset_of!(_unity_zpq, p) - 8usize];
53    ["Offset of field: _unity_zpq::q"][::std::mem::offset_of!(_unity_zpq, q) - 16usize];
54    ["Offset of field: _unity_zpq::ctx"][::std::mem::offset_of!(_unity_zpq, ctx) - 24usize];
55};
56impl Default for _unity_zpq {
57    fn default() -> Self {
58        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
59        unsafe {
60            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
61            s.assume_init()
62        }
63    }
64}
65pub type unity_zpq = [_unity_zpq; 1usize];
66#[repr(C)]
67pub struct _unity_zp {
68    pub poly: fmpz_mod_poly_t,
69    pub p: ulong,
70    pub exp: ulong,
71    pub ctx: fmpz_mod_ctx_t,
72}
73#[allow(clippy::unnecessary_operation, clippy::identity_op)]
74const _: () = {
75    ["Size of _unity_zp"][::std::mem::size_of::<_unity_zp>() - 152usize];
76    ["Alignment of _unity_zp"][::std::mem::align_of::<_unity_zp>() - 8usize];
77    ["Offset of field: _unity_zp::poly"][::std::mem::offset_of!(_unity_zp, poly) - 0usize];
78    ["Offset of field: _unity_zp::p"][::std::mem::offset_of!(_unity_zp, p) - 24usize];
79    ["Offset of field: _unity_zp::exp"][::std::mem::offset_of!(_unity_zp, exp) - 32usize];
80    ["Offset of field: _unity_zp::ctx"][::std::mem::offset_of!(_unity_zp, ctx) - 40usize];
81};
82impl Default for _unity_zp {
83    fn default() -> Self {
84        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
85        unsafe {
86            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
87            s.assume_init()
88        }
89    }
90}
91pub type unity_zp = [_unity_zp; 1usize];
92pub const primality_test_status_UNKNOWN: primality_test_status = 0;
93pub const primality_test_status_PRIME: primality_test_status = 1;
94pub const primality_test_status_COMPOSITE: primality_test_status = 2;
95pub const primality_test_status_PROBABPRIME: primality_test_status = 3;
96pub type primality_test_status = libc::c_uint;
97extern "C" {
98    pub fn _aprcl_p_ind(conf: *const _aprcl_config, p: ulong) -> libc::c_int;
99    pub fn aprcl_p_power_in_q(q: ulong, p: ulong) -> ulong;
100    pub fn aprcl_is_mul_coprime_ui_ui(x: ulong, y: ulong, n: *const fmpz) -> libc::c_int;
101    pub fn aprcl_is_mul_coprime_ui_fmpz(x: ulong, y: *const fmpz, n: *const fmpz) -> libc::c_int;
102    pub fn aprcl_is_prime(n: *const fmpz) -> libc::c_int;
103    pub fn aprcl_config_gauss_init(conf: *mut _aprcl_config, n: *const fmpz);
104    pub fn aprcl_config_gauss_init_min_R(conf: *mut _aprcl_config, n: *const fmpz, R: ulong);
105    pub fn aprcl_config_gauss_clear(conf: *mut _aprcl_config);
106    pub fn aprcl_R_value(n: *const fmpz) -> ulong;
107    pub fn aprcl_config_jacobi_init(conf: *mut _aprcl_config, n: *const fmpz);
108    pub fn aprcl_config_jacobi_clear(conf: *mut _aprcl_config);
109    pub fn aprcl_is_prime_gauss(n: *const fmpz) -> libc::c_int;
110    pub fn aprcl_is_prime_gauss_min_R(n: *const fmpz, R: ulong) -> libc::c_int;
111    pub fn _aprcl_is_prime_gauss(
112        n: *const fmpz,
113        config: *const _aprcl_config,
114    ) -> primality_test_status;
115    pub fn _aprcl_is_gausspower_2q_equal_first(q: ulong, n: *const fmpz) -> libc::c_int;
116    pub fn _aprcl_is_gausspower_2q_equal_second(q: ulong, n: *const fmpz) -> libc::c_int;
117    pub fn _aprcl_is_gausspower_from_unity_p(q: ulong, r: ulong, n: *const fmpz) -> slong;
118    pub fn aprcl_is_prime_jacobi(n: *const fmpz) -> libc::c_int;
119    pub fn _aprcl_is_prime_jacobi(
120        n: *const fmpz,
121        config: *const _aprcl_config,
122    ) -> primality_test_status;
123    pub fn _aprcl_is_prime_jacobi_check_pk(j: *const _unity_zp, u: *const fmpz, v: ulong) -> slong;
124    pub fn _aprcl_is_prime_jacobi_check_21(q: ulong, n: *const fmpz) -> slong;
125    pub fn _aprcl_is_prime_jacobi_check_22(
126        j: *const _unity_zp,
127        u: *const fmpz,
128        v: ulong,
129        q: ulong,
130    ) -> slong;
131    pub fn _aprcl_is_prime_jacobi_check_2k(
132        j: *const _unity_zp,
133        j2_1: *const _unity_zp,
134        j2_2: *const _unity_zp,
135        u: *const fmpz,
136        v: ulong,
137    ) -> slong;
138    pub fn _aprcl_is_prime_jacobi_additional_test(n: *const fmpz, p: ulong) -> libc::c_int;
139    pub fn aprcl_is_prime_final_division(n: *const fmpz, s: *const fmpz, r: ulong) -> libc::c_int;
140    pub fn unity_zp_init(f: *mut _unity_zp, p: ulong, exp: ulong, n: *const fmpz);
141    pub fn unity_zp_clear(f: *mut _unity_zp);
142    pub fn unity_zp_copy(f: *mut _unity_zp, g: *const _unity_zp);
143    pub fn unity_zp_swap(f: *mut _unity_zp, g: *mut _unity_zp);
144    pub fn unity_zp_set_zero(f: *mut _unity_zp);
145    pub fn unity_zp_is_unity(f: *mut _unity_zp) -> slong;
146    pub fn unity_zp_equal(f: *mut _unity_zp, g: *mut _unity_zp) -> libc::c_int;
147    pub fn unity_zp_coeff_set_fmpz(f: *mut _unity_zp, ind: ulong, x: *const fmpz);
148    pub fn unity_zp_coeff_set_ui(f: *mut _unity_zp, ind: ulong, x: ulong);
149    pub fn unity_zp_coeff_add_fmpz(f: *mut _unity_zp, ind: ulong, x: *const fmpz);
150    pub fn unity_zp_coeff_add_ui(f: *mut _unity_zp, ind: ulong, x: ulong);
151    pub fn unity_zp_coeff_inc(f: *mut _unity_zp, ind: ulong);
152    pub fn unity_zp_coeff_dec(f: *mut _unity_zp, ind: ulong);
153    pub fn unity_zp_mul_scalar_ui(f: *mut _unity_zp, g: *const _unity_zp, s: ulong);
154    pub fn unity_zp_add(f: *mut _unity_zp, g: *const _unity_zp, h: *const _unity_zp);
155    pub fn unity_zp_mul(f: *mut _unity_zp, g: *const _unity_zp, h: *const _unity_zp);
156    pub fn unity_zp_sqr(f: *mut _unity_zp, g: *const _unity_zp);
157    pub fn unity_zp_mul_inplace(
158        f: *mut _unity_zp,
159        g: *const _unity_zp,
160        h: *const _unity_zp,
161        t: *mut fmpz_t,
162    );
163    pub fn unity_zp_sqr_inplace(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
164    pub fn unity_zp_ar1(t: *mut fmpz_t);
165    pub fn unity_zp_ar2(t: *mut fmpz_t);
166    pub fn unity_zp_ar3(t: *mut fmpz_t);
167    pub fn unity_zp_ar4(t: *mut fmpz_t);
168    pub fn unity_zp_mul3(
169        f: *mut _unity_zp,
170        g: *const _unity_zp,
171        h: *const _unity_zp,
172        t: *mut fmpz_t,
173    );
174    pub fn unity_zp_mul4(
175        f: *mut _unity_zp,
176        g: *const _unity_zp,
177        h: *const _unity_zp,
178        t: *mut fmpz_t,
179    );
180    pub fn unity_zp_mul5(
181        f: *mut _unity_zp,
182        g: *const _unity_zp,
183        h: *const _unity_zp,
184        t: *mut fmpz_t,
185    );
186    pub fn unity_zp_mul7(
187        f: *mut _unity_zp,
188        g: *const _unity_zp,
189        h: *const _unity_zp,
190        t: *mut fmpz_t,
191    );
192    pub fn unity_zp_mul8(
193        f: *mut _unity_zp,
194        g: *const _unity_zp,
195        h: *const _unity_zp,
196        t: *mut fmpz_t,
197    );
198    pub fn unity_zp_mul9(
199        f: *mut _unity_zp,
200        g: *const _unity_zp,
201        h: *const _unity_zp,
202        t: *mut fmpz_t,
203    );
204    pub fn unity_zp_mul11(
205        f: *mut _unity_zp,
206        g: *const _unity_zp,
207        h: *const _unity_zp,
208        t: *mut fmpz_t,
209    );
210    pub fn unity_zp_mul16(
211        f: *mut _unity_zp,
212        g: *const _unity_zp,
213        h: *const _unity_zp,
214        t: *mut fmpz_t,
215    );
216    pub fn unity_zp_sqr3(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
217    pub fn unity_zp_sqr4(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
218    pub fn unity_zp_sqr5(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
219    pub fn unity_zp_sqr7(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
220    pub fn unity_zp_sqr8(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
221    pub fn unity_zp_sqr9(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
222    pub fn unity_zp_sqr11(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
223    pub fn unity_zp_sqr16(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
224    pub fn unity_zp_pow_fmpz(f: *mut _unity_zp, g: *const _unity_zp, pow: *const fmpz);
225    pub fn unity_zp_pow_ui(f: *mut _unity_zp, g: *const _unity_zp, pow: ulong);
226    pub fn _unity_zp_pow_select_k(n: *const fmpz) -> ulong;
227    pub fn unity_zp_pow_2k_fmpz(f: *mut _unity_zp, g: *const _unity_zp, pow: *const fmpz);
228    pub fn unity_zp_pow_2k_ui(f: *mut _unity_zp, g: *const _unity_zp, pow: ulong);
229    pub fn unity_zp_pow_sliding_fmpz(f: *mut _unity_zp, g: *mut _unity_zp, pow: *const fmpz);
230    pub fn _unity_zp_reduce_cyclotomic_divmod(f: *mut _unity_zp);
231    pub fn _unity_zp_reduce_cyclotomic(f: *mut _unity_zp);
232    pub fn unity_zp_reduce_cyclotomic(f: *mut _unity_zp, g: *const _unity_zp);
233    pub fn unity_zp_aut(f: *mut _unity_zp, g: *const _unity_zp, x: ulong);
234    pub fn unity_zp_aut_inv(f: *mut _unity_zp, g: *const _unity_zp, x: ulong);
235    pub fn aprcl_f_table(q: ulong) -> nn_ptr;
236    pub fn _unity_zp_jacobi_sum_pq_general(
237        f: *mut _unity_zp,
238        table: nn_ptr,
239        p: ulong,
240        q: ulong,
241        k: ulong,
242        a: ulong,
243        b: ulong,
244    );
245    pub fn unity_zp_jacobi_sum_pq(f: *mut _unity_zp, q: ulong, p: ulong);
246    pub fn unity_zp_jacobi_sum_2q_one(f: *mut _unity_zp, q: ulong);
247    pub fn unity_zp_jacobi_sum_2q_two(f: *mut _unity_zp, q: ulong);
248    pub fn unity_zpq_init(f: *mut _unity_zpq, q: ulong, p: ulong, n: *const fmpz);
249    pub fn unity_zpq_clear(f: *mut _unity_zpq);
250    pub fn unity_zpq_copy(f: *mut _unity_zpq, g: *const _unity_zpq);
251    pub fn unity_zpq_swap(f: *mut _unity_zpq, g: *mut _unity_zpq);
252    pub fn unity_zpq_equal(f: *const _unity_zpq, g: *const _unity_zpq) -> libc::c_int;
253    pub fn unity_zpq_coeff_set_fmpz(f: *mut _unity_zpq, i: slong, j: slong, x: *const fmpz);
254    pub fn unity_zpq_coeff_set_ui(f: *mut _unity_zpq, i: slong, j: slong, x: ulong);
255    pub fn unity_zpq_coeff_add(f: *mut _unity_zpq, i: slong, j: slong, x: *const fmpz);
256    pub fn unity_zpq_coeff_add_ui(f: *mut _unity_zpq, i: slong, j: slong, x: ulong);
257    pub fn unity_zpq_add(f: *mut _unity_zpq, g: *const _unity_zpq, h: *const _unity_zpq);
258    pub fn unity_zpq_mul(f: *mut _unity_zpq, g: *const _unity_zpq, h: *const _unity_zpq);
259    pub fn _unity_zpq_mul_unity_p(f: *mut _unity_zpq);
260    pub fn unity_zpq_mul_unity_p_pow(f: *mut _unity_zpq, g: *const _unity_zpq, p: slong);
261    pub fn unity_zpq_pow(f: *mut _unity_zpq, g: *const _unity_zpq, p: *const fmpz);
262    pub fn unity_zpq_pow_ui(f: *mut _unity_zpq, g: *const _unity_zpq, pow: ulong);
263    pub fn unity_zpq_gauss_sum(f: *mut _unity_zpq, q: ulong, p: ulong);
264    pub fn unity_zpq_gauss_sum_character_pow(f: *mut _unity_zpq, q: ulong, p: ulong, pow: ulong);
265    pub fn unity_zpq_gauss_sum_sigma_pow(f: *mut _unity_zpq, q: ulong, p: ulong);
266}