Skip to main content

flint_sys/
mpn_extras.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use crate::deps::*;
4use crate::flint::*;
5
6
7pub const FLINT_HAVE_NATIVE_mpn_2add_n_inplace: u32 = 1;
8pub const FLINT_HAVE_NATIVE_mpn_addlsh1_n_ip1: u32 = 2;
9pub const FLINT_MPN_MUL_FUNC_TAB_WIDTH: u32 = 17;
10pub const FLINT_MPN_SQR_FUNC_TAB_WIDTH: u32 = 14;
11pub const FLINT_MUL_USE_FUNC_TAB: u32 = 1;
12pub const FLINT_MPN_MULLOW_FUNC_TAB_WIDTH: u32 = 8;
13pub const FLINT_MPN_MULHIGH_FUNC_TAB_WIDTH: u32 = 13;
14pub const FLINT_MPN_MULHIGH_BEST_TAB_N: u32 = 9;
15pub const FLINT_MPN_SQRHIGH_FUNC_TAB_WIDTH: u32 = 8;
16pub const FLINT_MPN_MULHIGH_NORMALISED_FUNC_TAB_WIDTH: u32 = 9;
17pub const FLINT_MPN_SQRHIGH_NORMALISED_FUNC_TAB_WIDTH: u32 = 8;
18pub const FLINT_HAVE_NATIVE_mpn_mullow_basecase: u32 = 1;
19pub const FLINT_HAVE_NATIVE_mpn_mulhigh_basecase: u32 = 1;
20pub const FLINT_HAVE_NATIVE_mpn_sqrhigh_basecase: u32 = 1;
21pub const FLINT_MPN_MULLOW_MULDERS_CUTOFF: u32 = 50;
22pub const FLINT_MPN_MULHIGH_MULDERS_CUTOFF: u32 = 40;
23pub const FLINT_MPN_MULHIGH_MUL_CUTOFF: u32 = 2000;
24pub const FLINT_MPN_MULHIGH_K_TAB_SIZE: u32 = 2048;
25pub const FLINT_MPN_SQRHIGH_MULDERS_CUTOFF: u32 = 90;
26pub const FLINT_MPN_SQRHIGH_SQR_CUTOFF: u32 = 2000;
27pub const FLINT_MPN_SQRHIGH_K_TAB_SIZE: u32 = 2048;
28pub const MPN_MULMOD_PRECOND_NONE: u32 = 0;
29pub const MPN_MULMOD_PRECOND_SHOUP: u32 = 1;
30pub const MPN_MULMOD_PRECOND_MATRIX: u32 = 2;
31pub type flint_mpn_mul_func_t = ::std::option::Option<
32    unsafe extern "C" fn(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr) -> mp_limb_t,
33>;
34pub type flint_mpn_mul_func_n_t = ::std::option::Option<
35    unsafe extern "C" fn(
36        arg1: mp_ptr,
37        arg2: mp_srcptr,
38        arg3: mp_srcptr,
39        arg4: mp_size_t,
40    ) -> mp_limb_t,
41>;
42pub type flint_mpn_sqr_func_t =
43    ::std::option::Option<unsafe extern "C" fn(arg1: mp_ptr, arg2: mp_srcptr) -> mp_limb_t>;
44#[repr(C)]
45pub struct mp_limb_pair_t {
46    pub m1: mp_limb_t,
47    pub m2: mp_limb_t,
48}
49#[allow(clippy::unnecessary_operation, clippy::identity_op)]
50const _: () = {
51    ["Size of mp_limb_pair_t"][::std::mem::size_of::<mp_limb_pair_t>() - 16usize];
52    ["Alignment of mp_limb_pair_t"][::std::mem::align_of::<mp_limb_pair_t>() - 8usize];
53    ["Offset of field: mp_limb_pair_t::m1"][::std::mem::offset_of!(mp_limb_pair_t, m1) - 0usize];
54    ["Offset of field: mp_limb_pair_t::m2"][::std::mem::offset_of!(mp_limb_pair_t, m2) - 8usize];
55};
56impl Default for mp_limb_pair_t {
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 flint_mpn_sqrhigh_normalised_func_t =
66    ::std::option::Option<unsafe extern "C" fn(arg1: mp_ptr, arg2: mp_srcptr) -> mp_limb_pair_t>;
67pub type flint_mpn_mulhigh_normalised_func_t = ::std::option::Option<
68    unsafe extern "C" fn(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr) -> mp_limb_pair_t,
69>;
70extern "C" {
71    #[link_name = "flint_mpn_zero__extern"]
72    pub fn flint_mpn_zero(xp: mp_ptr, n: mp_size_t);
73    #[link_name = "flint_mpn_copyi__extern"]
74    pub fn flint_mpn_copyi(xp: mp_ptr, yp: mp_srcptr, n: mp_size_t);
75    #[link_name = "flint_mpn_copyd__extern"]
76    pub fn flint_mpn_copyd(xp: mp_ptr, yp: mp_srcptr, n: mp_size_t);
77    #[link_name = "flint_mpn_store__extern"]
78    pub fn flint_mpn_store(xp: mp_ptr, n: mp_size_t, y: mp_limb_t);
79    #[link_name = "flint_mpn_zero_p__extern"]
80    pub fn flint_mpn_zero_p(x: mp_srcptr, xsize: mp_size_t) -> libc::c_int;
81    #[link_name = "flint_mpn_equal_p__extern"]
82    pub fn flint_mpn_equal_p(x: mp_srcptr, y: mp_srcptr, xsize: mp_size_t) -> libc::c_int;
83    #[link_name = "flint_mpn_negmod_n__extern"]
84    pub fn flint_mpn_negmod_n(res: mp_ptr, x: mp_srcptr, m: mp_srcptr, n: mp_size_t);
85    #[link_name = "flint_mpn_addmod_n__extern"]
86    pub fn flint_mpn_addmod_n(res: mp_ptr, x: mp_srcptr, y: mp_srcptr, m: mp_srcptr, n: mp_size_t);
87    #[link_name = "flint_mpn_submod_n__extern"]
88    pub fn flint_mpn_submod_n(res: mp_ptr, x: mp_srcptr, y: mp_srcptr, m: mp_srcptr, n: mp_size_t);
89    #[link_name = "flint_mpn_addmod_n_m__extern"]
90    pub fn flint_mpn_addmod_n_m(
91        res: mp_ptr,
92        x: mp_srcptr,
93        y: mp_srcptr,
94        yn: mp_size_t,
95        m: mp_srcptr,
96        n: mp_size_t,
97    );
98    #[link_name = "flint_mpn_submod_n_m__extern"]
99    pub fn flint_mpn_submod_n_m(
100        res: mp_ptr,
101        x: mp_srcptr,
102        y: mp_srcptr,
103        yn: mp_size_t,
104        m: mp_srcptr,
105        n: mp_size_t,
106    );
107    #[link_name = "flint_mpn_negmod_2__extern"]
108    pub fn flint_mpn_negmod_2(res: mp_ptr, x: mp_srcptr, m: mp_srcptr);
109    #[link_name = "flint_mpn_addmod_2__extern"]
110    pub fn flint_mpn_addmod_2(res: mp_ptr, x: mp_srcptr, y: mp_srcptr, m: mp_srcptr);
111    #[link_name = "_flint_mpn_addmod_2__extern"]
112    pub fn _flint_mpn_addmod_2(res: mp_ptr, x: mp_srcptr, y: mp_srcptr, m: mp_srcptr);
113    #[link_name = "flint_mpn_submod_2__extern"]
114    pub fn flint_mpn_submod_2(res: mp_ptr, x: mp_srcptr, y: mp_srcptr, m: mp_srcptr);
115    #[link_name = "flint_mpn_signed_sub_n__extern"]
116    pub fn flint_mpn_signed_sub_n(
117        res: mp_ptr,
118        x: mp_srcptr,
119        y: mp_srcptr,
120        n: mp_size_t,
121    ) -> libc::c_int;
122    #[link_name = "flint_mpn_signed_sub_2__extern"]
123    pub fn flint_mpn_signed_sub_2(res: mp_ptr, x: mp_srcptr, y: mp_srcptr) -> libc::c_int;
124    #[link_name = "flint_mpn_signed_sub_3__extern"]
125    pub fn flint_mpn_signed_sub_3(res: mp_ptr, x: mp_srcptr, y: mp_srcptr) -> libc::c_int;
126    #[link_name = "flint_mpn_signed_sub_4__extern"]
127    pub fn flint_mpn_signed_sub_4(res: mp_ptr, x: mp_srcptr, y: mp_srcptr) -> libc::c_int;
128    #[link_name = "flint_mpn_signed_sub_5__extern"]
129    pub fn flint_mpn_signed_sub_5(res: mp_ptr, x: mp_srcptr, y: mp_srcptr) -> libc::c_int;
130    #[link_name = "flint_mpn_signed_sub_6__extern"]
131    pub fn flint_mpn_signed_sub_6(res: mp_ptr, x: mp_srcptr, y: mp_srcptr) -> libc::c_int;
132    #[link_name = "flint_mpn_signed_sub_7__extern"]
133    pub fn flint_mpn_signed_sub_7(res: mp_ptr, x: mp_srcptr, y: mp_srcptr) -> libc::c_int;
134    #[link_name = "flint_mpn_signed_sub_8__extern"]
135    pub fn flint_mpn_signed_sub_8(res: mp_ptr, x: mp_srcptr, y: mp_srcptr) -> libc::c_int;
136    #[link_name = "flint_mpn_signed_div2__extern"]
137    pub fn flint_mpn_signed_div2(res: mp_ptr, x: mp_srcptr, n: mp_size_t);
138    pub fn flint_mpn_mulmod_preinvn_2(
139        r: mp_ptr,
140        a: mp_srcptr,
141        b: mp_srcptr,
142        d: mp_srcptr,
143        dinv: mp_srcptr,
144        norm: ulong,
145    );
146    pub fn flint_mpn_get_str(
147        res: *mut libc::c_char,
148        base: libc::c_int,
149        x: mp_srcptr,
150        xn: mp_size_t,
151        negative: libc::c_int,
152    ) -> *mut libc::c_char;
153    pub fn flint_mpn_2add_n_inplace(
154        arg1: mp_ptr,
155        arg2: mp_srcptr,
156        arg3: mp_srcptr,
157        arg4: mp_size_t,
158    ) -> mp_limb_t;
159    #[link_name = "mpn_add_nc__extern"]
160    pub fn mpn_add_nc(
161        rp: mp_ptr,
162        up: mp_srcptr,
163        vp: mp_srcptr,
164        n: mp_size_t,
165        ci: mp_limb_t,
166    ) -> mp_limb_t;
167    #[link_name = "mpn_sub_nc__extern"]
168    pub fn mpn_sub_nc(
169        rp: mp_ptr,
170        up: mp_srcptr,
171        vp: mp_srcptr,
172        n: mp_size_t,
173        ci: mp_limb_t,
174    ) -> mp_limb_t;
175    pub fn flint_mpn_sumdiff_n(
176        s: mp_ptr,
177        d: mp_ptr,
178        x: mp_srcptr,
179        y: mp_srcptr,
180        n: mp_size_t,
181    ) -> mp_limb_t;
182    pub fn __gmpn_addlsh1_n(
183        arg1: mp_ptr,
184        arg2: mp_srcptr,
185        arg3: mp_srcptr,
186        arg4: mp_size_t,
187    ) -> mp_limb_t;
188    pub fn __gmpn_rsh1add_n(
189        arg1: mp_ptr,
190        arg2: mp_srcptr,
191        arg3: mp_srcptr,
192        arg4: mp_size_t,
193    ) -> mp_limb_t;
194    pub fn __gmpn_rsh1sub_n(
195        arg1: mp_ptr,
196        arg2: mp_srcptr,
197        arg3: mp_srcptr,
198        arg4: mp_size_t,
199    ) -> mp_limb_t;
200    pub static mut flint_mpn_mul_func_tab: [[flint_mpn_mul_func_t; 17usize]; 0usize];
201    pub static flint_mpn_mul_n_func_tab: [flint_mpn_mul_func_t; 0usize];
202    pub static flint_mpn_sqr_func_tab: [flint_mpn_sqr_func_t; 0usize];
203    pub fn flint_mpn_mul_toom22(
204        pp: mp_ptr,
205        ap: mp_srcptr,
206        an: mp_size_t,
207        bp: mp_srcptr,
208        bn: mp_size_t,
209        scratch: mp_ptr,
210    );
211    pub fn flint_mpn_mul_toom32(
212        pp: mp_ptr,
213        ap: mp_srcptr,
214        an: mp_size_t,
215        bp: mp_srcptr,
216        bn: mp_size_t,
217        scratch: mp_ptr,
218    );
219    pub fn _flint_mpn_mul(
220        r: mp_ptr,
221        x: mp_srcptr,
222        xn: mp_size_t,
223        y: mp_srcptr,
224        yn: mp_size_t,
225    ) -> mp_limb_t;
226    pub fn _flint_mpn_mul_n(r: mp_ptr, x: mp_srcptr, y: mp_srcptr, n: mp_size_t);
227    pub fn _flint_mpn_sqr(r: mp_ptr, x: mp_srcptr, n: mp_size_t) -> mp_limb_t;
228    #[link_name = "flint_mpn_mul__extern"]
229    pub fn flint_mpn_mul(
230        r: mp_ptr,
231        x: mp_srcptr,
232        xn: mp_size_t,
233        y: mp_srcptr,
234        yn: mp_size_t,
235    ) -> mp_limb_t;
236    #[link_name = "flint_mpn_mul_n__extern"]
237    pub fn flint_mpn_mul_n(r: mp_ptr, x: mp_srcptr, y: mp_srcptr, n: mp_size_t);
238    #[link_name = "flint_mpn_sqr__extern"]
239    pub fn flint_mpn_sqr(r: mp_ptr, x: mp_srcptr, n: mp_size_t) -> mp_limb_t;
240    pub static flint_mpn_mullow_func_tab: [flint_mpn_mul_func_t; 0usize];
241    pub static flint_mpn_mulhigh_func_tab: [flint_mpn_mul_func_t; 0usize];
242    pub static flint_mpn_sqrhigh_func_tab: [flint_mpn_sqr_func_t; 0usize];
243    pub static flint_mpn_mulhigh_normalised_func_tab: [flint_mpn_mulhigh_normalised_func_t; 0usize];
244    pub static flint_mpn_sqrhigh_normalised_func_tab: [flint_mpn_sqrhigh_normalised_func_t; 0usize];
245    pub static flint_mpn_mulhigh_k_tab: [libc::c_short; 2048usize];
246    pub fn flint_mpn_mullow_basecase(
247        res: mp_ptr,
248        u: mp_srcptr,
249        v: mp_srcptr,
250        n: mp_size_t,
251    ) -> mp_limb_t;
252    pub fn _flint_mpn_mullow_n_mulders_recursive(
253        rp: mp_ptr,
254        np: mp_srcptr,
255        mp: mp_srcptr,
256        n: mp_size_t,
257    );
258    pub fn _flint_mpn_mullow_n_mulders(
259        res: mp_ptr,
260        u: mp_srcptr,
261        v: mp_srcptr,
262        n: mp_size_t,
263    ) -> mp_limb_t;
264    pub fn _flint_mpn_mullow_n_mul(
265        res: mp_ptr,
266        u: mp_srcptr,
267        v: mp_srcptr,
268        n: mp_size_t,
269    ) -> mp_limb_t;
270    pub fn _flint_mpn_mullow_n(res: mp_ptr, u: mp_srcptr, v: mp_srcptr, n: mp_size_t) -> mp_limb_t;
271    pub fn _flint_mpn_mulhigh_basecase(
272        res: mp_ptr,
273        u: mp_srcptr,
274        v: mp_srcptr,
275        n: mp_size_t,
276    ) -> mp_limb_t;
277    pub fn _flint_mpn_mulhigh_n_mulders_recursive(
278        rp: mp_ptr,
279        np: mp_srcptr,
280        mp: mp_srcptr,
281        n: mp_size_t,
282    );
283    pub fn _flint_mpn_mulhigh_n_naive(
284        rp: mp_ptr,
285        up: mp_srcptr,
286        vp: mp_srcptr,
287        n: mp_size_t,
288    ) -> mp_limb_t;
289    pub fn _flint_mpn_mulhigh_n_recursive(
290        r: mp_ptr,
291        x: mp_srcptr,
292        y: mp_srcptr,
293        n: mp_size_t,
294    ) -> mp_limb_t;
295    pub fn _flint_mpn_mulhigh_n_mulders(
296        res: mp_ptr,
297        u: mp_srcptr,
298        v: mp_srcptr,
299        n: mp_size_t,
300    ) -> mp_limb_t;
301    pub fn _flint_mpn_mulhigh_n_mul(
302        res: mp_ptr,
303        u: mp_srcptr,
304        v: mp_srcptr,
305        n: mp_size_t,
306    ) -> mp_limb_t;
307    pub fn _flint_mpn_mulhigh_n(res: mp_ptr, u: mp_srcptr, v: mp_srcptr, n: mp_size_t)
308        -> mp_limb_t;
309    #[link_name = "_flint_mpn_mulhigh_n_basecase2__extern"]
310    pub fn _flint_mpn_mulhigh_n_basecase2(
311        rp: mp_ptr,
312        xp: mp_srcptr,
313        yp: mp_srcptr,
314        n: mp_size_t,
315    ) -> mp_limb_t;
316    #[link_name = "flint_mpn_mullow_n__extern"]
317    pub fn flint_mpn_mullow_n(rp: mp_ptr, xp: mp_srcptr, yp: mp_srcptr, n: mp_size_t) -> mp_limb_t;
318    #[link_name = "flint_mpn_mulhigh_n__extern"]
319    pub fn flint_mpn_mulhigh_n(rp: mp_ptr, xp: mp_srcptr, yp: mp_srcptr, n: mp_size_t)
320        -> mp_limb_t;
321    #[link_name = "flint_mpn_mul_or_mullow_n__extern"]
322    pub fn flint_mpn_mul_or_mullow_n(rp: mp_ptr, xp: mp_srcptr, yp: mp_srcptr, n: mp_size_t);
323    #[link_name = "flint_mpn_mul_or_mulhigh_n__extern"]
324    pub fn flint_mpn_mul_or_mulhigh_n(rp: mp_ptr, xp: mp_srcptr, yp: mp_srcptr, n: mp_size_t);
325    pub fn _flint_mpn_sqrhigh_basecase_even(
326        arg1: mp_ptr,
327        arg2: mp_srcptr,
328        arg3: mp_size_t,
329    ) -> mp_limb_t;
330    pub fn _flint_mpn_sqrhigh_basecase_odd(
331        arg1: mp_ptr,
332        arg2: mp_srcptr,
333        arg3: mp_size_t,
334    ) -> mp_limb_t;
335    #[link_name = "_flint_mpn_sqrhigh_basecase__extern"]
336    pub fn _flint_mpn_sqrhigh_basecase(rp: mp_ptr, xp: mp_srcptr, n: mp_size_t) -> mp_limb_t;
337    pub fn _flint_mpn_sqrhigh_mulders_recursive(rp: mp_ptr, np: mp_srcptr, n: mp_size_t);
338    pub fn _flint_mpn_sqrhigh_mulders(res: mp_ptr, u: mp_srcptr, n: mp_size_t) -> mp_limb_t;
339    pub fn _flint_mpn_sqrhigh_sqr(res: mp_ptr, u: mp_srcptr, n: mp_size_t) -> mp_limb_t;
340    pub fn _flint_mpn_sqrhigh(res: mp_ptr, u: mp_srcptr, n: mp_size_t) -> mp_limb_t;
341    #[link_name = "flint_mpn_sqrhigh__extern"]
342    pub fn flint_mpn_sqrhigh(rp: mp_ptr, xp: mp_srcptr, n: mp_size_t) -> mp_limb_t;
343    pub fn _flint_mpn_mulhigh_normalised(
344        rp: mp_ptr,
345        xp: mp_srcptr,
346        yp: mp_srcptr,
347        n: mp_size_t,
348    ) -> mp_limb_pair_t;
349    #[link_name = "flint_mpn_mulhigh_normalised__extern"]
350    pub fn flint_mpn_mulhigh_normalised(
351        rp: mp_ptr,
352        xp: mp_srcptr,
353        yp: mp_srcptr,
354        n: mp_size_t,
355    ) -> mp_limb_pair_t;
356    pub fn _flint_mpn_sqrhigh_normalised(rp: mp_ptr, xp: mp_srcptr, n: mp_size_t)
357        -> mp_limb_pair_t;
358    #[link_name = "flint_mpn_sqrhigh_normalised__extern"]
359    pub fn flint_mpn_sqrhigh_normalised(rp: mp_ptr, xp: mp_srcptr, n: mp_size_t) -> mp_limb_pair_t;
360    pub fn flint_mpn_preinv1(d: mp_limb_t, d2: mp_limb_t) -> mp_limb_t;
361    pub fn flint_mpn_preinvn(dinv: mp_ptr, d: mp_srcptr, n: mp_size_t);
362    #[link_name = "flint_mpn_divisible_1_odd__extern"]
363    pub fn flint_mpn_divisible_1_odd(x: mp_srcptr, xsize: mp_size_t, d: mp_limb_t) -> libc::c_int;
364    #[link_name = "mpn_tdiv_q__extern"]
365    pub fn mpn_tdiv_q(qp: mp_ptr, np: mp_srcptr, nn: mp_size_t, dp: mp_srcptr, dn: mp_size_t);
366    pub fn flint_mpn_divides(
367        q: mp_ptr,
368        ap: mp_srcptr,
369        an: mp_size_t,
370        bp: mp_srcptr,
371        bn: mp_size_t,
372        scr: mp_ptr,
373    ) -> libc::c_int;
374    pub fn flint_mpn_mod_preinvn(
375        r: mp_ptr,
376        a: mp_srcptr,
377        m: mp_size_t,
378        d: mp_srcptr,
379        n: mp_size_t,
380        dinv: mp_srcptr,
381    );
382    pub fn flint_mpn_divrem_preinv1(
383        q: mp_ptr,
384        a: mp_ptr,
385        m: mp_size_t,
386        b: mp_srcptr,
387        n: mp_size_t,
388        dinv: mp_limb_t,
389    ) -> mp_limb_t;
390    pub fn flint_mpn_divrem_preinvn(
391        q: mp_ptr,
392        r: mp_ptr,
393        a: mp_srcptr,
394        m: mp_size_t,
395        d: mp_srcptr,
396        n: mp_size_t,
397        dinv: mp_srcptr,
398    ) -> mp_limb_t;
399    pub fn flint_mpn_divrem_1_preinv(
400        qp: mp_ptr,
401        up: mp_srcptr,
402        n: mp_size_t,
403        d: mp_limb_t,
404        dinv: mp_limb_t,
405        norm: libc::c_uint,
406    ) -> mp_limb_t;
407    pub fn flint_mpn_divrem_2_1_preinv_norm(
408        qp: mp_ptr,
409        up: mp_srcptr,
410        d: mp_limb_t,
411        dinv: mp_limb_t,
412    ) -> mp_limb_t;
413    pub fn flint_mpn_divrem_2_1_preinv_unnorm(
414        qp: mp_ptr,
415        up: mp_srcptr,
416        d: mp_limb_t,
417        dinv: mp_limb_t,
418        norm: libc::c_uint,
419    ) -> mp_limb_t;
420    pub fn flint_mpn_divrem_3_1_preinv_norm(
421        qp: mp_ptr,
422        up: mp_srcptr,
423        d: mp_limb_t,
424        dinv: mp_limb_t,
425    ) -> mp_limb_t;
426    pub fn flint_mpn_divrem_3_1_preinv_unnorm(
427        qp: mp_ptr,
428        up: mp_srcptr,
429        d: mp_limb_t,
430        dinv: mp_limb_t,
431        norm: libc::c_uint,
432    ) -> mp_limb_t;
433    pub fn flint_mpn_fmms1(
434        y: mp_ptr,
435        a1: mp_limb_t,
436        x1: mp_srcptr,
437        a2: mp_limb_t,
438        x2: mp_srcptr,
439        n: mp_size_t,
440    ) -> mp_size_t;
441    pub fn flint_mpn_debug(x: mp_srcptr, xsize: mp_size_t);
442    pub fn flint_mpn_remove_2exp(
443        x: mp_ptr,
444        xsize: mp_size_t,
445        bits: *mut flint_bitcnt_t,
446    ) -> mp_size_t;
447    pub fn flint_mpn_remove_power_ascending(
448        x: mp_ptr,
449        xsize: mp_size_t,
450        p: mp_ptr,
451        psize: mp_size_t,
452        exp: *mut ulong,
453    ) -> mp_size_t;
454    pub fn flint_mpn_factor_trial(
455        x: mp_srcptr,
456        xsize: mp_size_t,
457        start: slong,
458        stop: slong,
459    ) -> libc::c_int;
460    pub fn flint_mpn_factor_trial_tree(
461        factors: *mut slong,
462        x: mp_srcptr,
463        xsize: mp_size_t,
464        num_primes: slong,
465    ) -> libc::c_int;
466    pub fn flint_mpn_gcd_full2(
467        gp: mp_ptr,
468        ap: mp_srcptr,
469        an: mp_size_t,
470        bp: mp_srcptr,
471        bn: mp_size_t,
472        scr: mp_ptr,
473    ) -> mp_size_t;
474    pub fn flint_mpn_gcd_full(
475        gp: mp_ptr,
476        ap: mp_srcptr,
477        an: mp_size_t,
478        bp: mp_srcptr,
479        bn: mp_size_t,
480    ) -> mp_size_t;
481    pub fn flint_mpn_mulmod_preinv1(
482        r: mp_ptr,
483        a: mp_srcptr,
484        b: mp_srcptr,
485        n: mp_size_t,
486        d: mp_srcptr,
487        dinv: mp_limb_t,
488        norm: ulong,
489    );
490    pub fn flint_mpn_mulmod_preinvn(
491        r: mp_ptr,
492        a: mp_srcptr,
493        b: mp_srcptr,
494        n: mp_size_t,
495        d: mp_srcptr,
496        dinv: mp_srcptr,
497        norm: ulong,
498    );
499    pub fn flint_mpn_mulmod_want_precond(n: mp_size_t, num: slong, norm: ulong) -> libc::c_int;
500    pub fn flint_mpn_mulmod_precond_matrix_precompute(
501        apre: mp_ptr,
502        a: mp_srcptr,
503        n: mp_size_t,
504        d: mp_srcptr,
505        dinv: mp_srcptr,
506        norm: ulong,
507    );
508    pub fn flint_mpn_mulmod_precond_matrix_alloc(n: mp_size_t) -> mp_size_t;
509    pub fn flint_mpn_mulmod_precond_matrix(
510        rp: mp_ptr,
511        apre: mp_srcptr,
512        b: mp_srcptr,
513        n: mp_size_t,
514        d: mp_srcptr,
515        dinv: mp_srcptr,
516        norm: ulong,
517    );
518    pub fn flint_mpn_mulmod_precond_shoup_precompute(
519        apre: mp_ptr,
520        a: mp_srcptr,
521        n: mp_size_t,
522        dnormed: mp_srcptr,
523        dinv: mp_srcptr,
524        norm: ulong,
525    );
526    pub fn flint_mpn_mulmod_precond_shoup(
527        res: mp_ptr,
528        a: mp_srcptr,
529        apre: mp_srcptr,
530        b: mp_srcptr,
531        n: mp_size_t,
532        d: mp_srcptr,
533        norm: ulong,
534    );
535    pub fn flint_mpn_fmmamod_preinvn(
536        r: mp_ptr,
537        a: mp_srcptr,
538        b: mp_srcptr,
539        e: mp_srcptr,
540        f: mp_srcptr,
541        n: mp_size_t,
542        d: mp_srcptr,
543        dinv: mp_srcptr,
544        norm: ulong,
545    );
546    pub fn flint_mpn_fmmamod_preinvn_2(
547        r: mp_ptr,
548        a: mp_srcptr,
549        b: mp_srcptr,
550        e: mp_srcptr,
551        f: mp_srcptr,
552        d: mp_srcptr,
553        dinv: mp_srcptr,
554        norm: ulong,
555    );
556    pub fn flint_mpn_fmmamod_precond_matrix(
557        rp: mp_ptr,
558        apre1: mp_srcptr,
559        b1: mp_srcptr,
560        apre2: mp_srcptr,
561        b2: mp_srcptr,
562        n: mp_size_t,
563        d: mp_srcptr,
564        dinv: mp_srcptr,
565        norm: ulong,
566    );
567    pub fn flint_mpn_mulmod_2expp1_basecase(
568        xp: mp_ptr,
569        yp: mp_srcptr,
570        zp: mp_srcptr,
571        c: libc::c_int,
572        b: flint_bitcnt_t,
573        tp: mp_ptr,
574    ) -> libc::c_int;
575    pub fn flint_mpn_get_d(
576        ptr: mp_srcptr,
577        size: mp_size_t,
578        sign: mp_size_t,
579        exp: libc::c_long,
580    ) -> f64;
581    pub fn flint_mpn_rrandom(rp: mp_ptr, state: *mut flint_rand_struct, n: mp_size_t);
582    pub fn flint_mpn_rrandomb(rp: mp_ptr, state: *mut flint_rand_struct, n: flint_bitcnt_t);
583    pub fn flint_mpn_urandomb(rp: mp_ptr, state: *mut flint_rand_struct, n: flint_bitcnt_t);
584    pub fn flint_mpn_urandomm(
585        rp: mp_ptr,
586        state: *mut flint_rand_struct,
587        xp: mp_srcptr,
588        xn: mp_size_t,
589    );
590}