Skip to main content

flint_sys/
radix.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use crate::deps::*;
4use crate::flint::*;
5use crate::gr_types::*;
6
7
8#[repr(C)]
9pub struct n_div_precomp_struct {
10    pub m: ulong,
11    pub e: libc::c_uint,
12    pub c: libc::c_uint,
13}
14#[allow(clippy::unnecessary_operation, clippy::identity_op)]
15const _: () = {
16    ["Size of n_div_precomp_struct"][::std::mem::size_of::<n_div_precomp_struct>() - 16usize];
17    ["Alignment of n_div_precomp_struct"][::std::mem::align_of::<n_div_precomp_struct>() - 8usize];
18    ["Offset of field: n_div_precomp_struct::m"]
19        [::std::mem::offset_of!(n_div_precomp_struct, m) - 0usize];
20    ["Offset of field: n_div_precomp_struct::e"]
21        [::std::mem::offset_of!(n_div_precomp_struct, e) - 8usize];
22    ["Offset of field: n_div_precomp_struct::c"]
23        [::std::mem::offset_of!(n_div_precomp_struct, c) - 12usize];
24};
25impl Default for n_div_precomp_struct {
26    fn default() -> Self {
27        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
28        unsafe {
29            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
30            s.assume_init()
31        }
32    }
33}
34pub type n_div_precomp_t = [n_div_precomp_struct; 1usize];
35#[repr(C)]
36pub struct n_pair_struct {
37    pub a: ulong,
38    pub b: ulong,
39}
40#[allow(clippy::unnecessary_operation, clippy::identity_op)]
41const _: () = {
42    ["Size of n_pair_struct"][::std::mem::size_of::<n_pair_struct>() - 16usize];
43    ["Alignment of n_pair_struct"][::std::mem::align_of::<n_pair_struct>() - 8usize];
44    ["Offset of field: n_pair_struct::a"][::std::mem::offset_of!(n_pair_struct, a) - 0usize];
45    ["Offset of field: n_pair_struct::b"][::std::mem::offset_of!(n_pair_struct, b) - 8usize];
46};
47impl Default for n_pair_struct {
48    fn default() -> Self {
49        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
50        unsafe {
51            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
52            s.assume_init()
53        }
54    }
55}
56#[repr(C)]
57pub struct radix_struct {
58    pub b: nmod_t,
59    pub exp: libc::c_uint,
60    pub B: nmod_t,
61    pub bpow: *mut ulong,
62    pub bpow_div: *mut n_div_precomp_struct,
63    pub bits_to_digit_size: [libc::c_uchar; 64usize],
64    pub bval: libc::c_uint,
65    pub bpow_oddinv: *mut n_pair_struct,
66    pub val_func: ::std::option::Option<
67        unsafe extern "C" fn(arg1: ulong, arg2: *const libc::c_void) -> ulong,
68    >,
69    pub trunc_limbs: slong,
70    pub trunc_digits: slong,
71}
72#[allow(clippy::unnecessary_operation, clippy::identity_op)]
73const _: () = {
74    ["Size of radix_struct"][::std::mem::size_of::<radix_struct>() - 176usize];
75    ["Alignment of radix_struct"][::std::mem::align_of::<radix_struct>() - 8usize];
76    ["Offset of field: radix_struct::b"][::std::mem::offset_of!(radix_struct, b) - 0usize];
77    ["Offset of field: radix_struct::exp"][::std::mem::offset_of!(radix_struct, exp) - 24usize];
78    ["Offset of field: radix_struct::B"][::std::mem::offset_of!(radix_struct, B) - 32usize];
79    ["Offset of field: radix_struct::bpow"][::std::mem::offset_of!(radix_struct, bpow) - 56usize];
80    ["Offset of field: radix_struct::bpow_div"]
81        [::std::mem::offset_of!(radix_struct, bpow_div) - 64usize];
82    ["Offset of field: radix_struct::bits_to_digit_size"]
83        [::std::mem::offset_of!(radix_struct, bits_to_digit_size) - 72usize];
84    ["Offset of field: radix_struct::bval"][::std::mem::offset_of!(radix_struct, bval) - 136usize];
85    ["Offset of field: radix_struct::bpow_oddinv"]
86        [::std::mem::offset_of!(radix_struct, bpow_oddinv) - 144usize];
87    ["Offset of field: radix_struct::val_func"]
88        [::std::mem::offset_of!(radix_struct, val_func) - 152usize];
89    ["Offset of field: radix_struct::trunc_limbs"]
90        [::std::mem::offset_of!(radix_struct, trunc_limbs) - 160usize];
91    ["Offset of field: radix_struct::trunc_digits"]
92        [::std::mem::offset_of!(radix_struct, trunc_digits) - 168usize];
93};
94impl Default for radix_struct {
95    fn default() -> Self {
96        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
97        unsafe {
98            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
99            s.assume_init()
100        }
101    }
102}
103pub type radix_t = [radix_struct; 1usize];
104#[repr(C)]
105pub struct radix_powers_struct {
106    pub len: slong,
107    pub exps: [ulong; 64usize],
108    pub pows: [nn_ptr; 64usize],
109    pub sizes: [slong; 64usize],
110    pub val_limbs: [slong; 64usize],
111    pub buf: nn_ptr,
112}
113#[allow(clippy::unnecessary_operation, clippy::identity_op)]
114const _: () = {
115    ["Size of radix_powers_struct"][::std::mem::size_of::<radix_powers_struct>() - 2064usize];
116    ["Alignment of radix_powers_struct"][::std::mem::align_of::<radix_powers_struct>() - 8usize];
117    ["Offset of field: radix_powers_struct::len"]
118        [::std::mem::offset_of!(radix_powers_struct, len) - 0usize];
119    ["Offset of field: radix_powers_struct::exps"]
120        [::std::mem::offset_of!(radix_powers_struct, exps) - 8usize];
121    ["Offset of field: radix_powers_struct::pows"]
122        [::std::mem::offset_of!(radix_powers_struct, pows) - 520usize];
123    ["Offset of field: radix_powers_struct::sizes"]
124        [::std::mem::offset_of!(radix_powers_struct, sizes) - 1032usize];
125    ["Offset of field: radix_powers_struct::val_limbs"]
126        [::std::mem::offset_of!(radix_powers_struct, val_limbs) - 1544usize];
127    ["Offset of field: radix_powers_struct::buf"]
128        [::std::mem::offset_of!(radix_powers_struct, buf) - 2056usize];
129};
130impl Default for radix_powers_struct {
131    fn default() -> Self {
132        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
133        unsafe {
134            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
135            s.assume_init()
136        }
137    }
138}
139pub type radix_powers_t = [radix_powers_struct; 1usize];
140#[repr(C)]
141pub struct radix_integer_struct {
142    pub d: nn_ptr,
143    pub alloc: slong,
144    pub size: slong,
145}
146#[allow(clippy::unnecessary_operation, clippy::identity_op)]
147const _: () = {
148    ["Size of radix_integer_struct"][::std::mem::size_of::<radix_integer_struct>() - 24usize];
149    ["Alignment of radix_integer_struct"][::std::mem::align_of::<radix_integer_struct>() - 8usize];
150    ["Offset of field: radix_integer_struct::d"]
151        [::std::mem::offset_of!(radix_integer_struct, d) - 0usize];
152    ["Offset of field: radix_integer_struct::alloc"]
153        [::std::mem::offset_of!(radix_integer_struct, alloc) - 8usize];
154    ["Offset of field: radix_integer_struct::size"]
155        [::std::mem::offset_of!(radix_integer_struct, size) - 16usize];
156};
157impl Default for radix_integer_struct {
158    fn default() -> Self {
159        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
160        unsafe {
161            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
162            s.assume_init()
163        }
164    }
165}
166pub type radix_integer_t = [radix_integer_struct; 1usize];
167extern "C" {
168    pub fn radix_init(radix: *mut radix_struct, b: ulong, exp: libc::c_uint);
169    pub fn radix_clear(radix: *mut radix_struct);
170    pub fn radix_init_randtest(radix: *mut radix_struct, state: *mut flint_rand_struct);
171    #[link_name = "radix_digit_radix__extern"]
172    pub fn radix_digit_radix(radix: *const radix_struct) -> ulong;
173    #[link_name = "radix_limb_radix__extern"]
174    pub fn radix_limb_radix(radix: *const radix_struct) -> ulong;
175    #[link_name = "radix_limb_exponent__extern"]
176    pub fn radix_limb_exponent(radix: *const radix_struct) -> ulong;
177    #[link_name = "_radix_size_digits_1__extern"]
178    pub fn _radix_size_digits_1(c: ulong, radix: *const radix_struct) -> ulong;
179    #[link_name = "radix_size_digits_1__extern"]
180    pub fn radix_size_digits_1(c: ulong, radix: *const radix_struct) -> ulong;
181    #[link_name = "_radix_size_digits__extern"]
182    pub fn _radix_size_digits(x: nn_srcptr, n: slong, radix: *const radix_struct) -> ulong;
183    #[link_name = "radix_size_digits__extern"]
184    pub fn radix_size_digits(x: nn_srcptr, n: slong, radix: *const radix_struct) -> ulong;
185    #[link_name = "_radix_valuation_digits_1__extern"]
186    pub fn _radix_valuation_digits_1(c: ulong, radix: *const radix_struct) -> ulong;
187    pub fn radix_rand_limbs(
188        res: nn_ptr,
189        state: *mut flint_rand_struct,
190        n: slong,
191        radix: *const radix_struct,
192    );
193    pub fn radix_rand_digits(
194        res: nn_ptr,
195        state: *mut flint_rand_struct,
196        n: slong,
197        radix: *const radix_struct,
198    );
199    pub fn radix_randtest_limbs(
200        res: nn_ptr,
201        state: *mut flint_rand_struct,
202        n: slong,
203        radix: *const radix_struct,
204    );
205    pub fn radix_randtest_digits(
206        res: nn_ptr,
207        state: *mut flint_rand_struct,
208        n: slong,
209        radix: *const radix_struct,
210    );
211    pub fn radix_neg(res: nn_ptr, a: nn_srcptr, an: slong, radix: *const radix_struct) -> ulong;
212    pub fn radix_add(
213        res: nn_ptr,
214        a: nn_srcptr,
215        an: slong,
216        b: nn_srcptr,
217        bn: slong,
218        radix: *const radix_struct,
219    ) -> ulong;
220    pub fn radix_sub(
221        res: nn_ptr,
222        a: nn_srcptr,
223        an: slong,
224        b: nn_srcptr,
225        bn: slong,
226        radix: *const radix_struct,
227    ) -> ulong;
228    pub fn radix_lshift_digits(
229        res: nn_ptr,
230        a: nn_srcptr,
231        n: slong,
232        e: libc::c_uint,
233        radix: *const radix_struct,
234    ) -> ulong;
235    pub fn radix_rshift_digits(
236        res: nn_ptr,
237        a: nn_srcptr,
238        n: slong,
239        e: libc::c_uint,
240        radix: *const radix_struct,
241    ) -> ulong;
242    pub fn radix_mul_1(
243        res: nn_ptr,
244        a: nn_srcptr,
245        n: slong,
246        c: ulong,
247        radix: *const radix_struct,
248    ) -> ulong;
249    pub fn radix_mulmid_fft_small(
250        res: nn_ptr,
251        a: nn_srcptr,
252        an: slong,
253        b: nn_srcptr,
254        bn: slong,
255        lo: slong,
256        hi: slong,
257        radix: *const radix_struct,
258    );
259    pub fn radix_mulmid_classical(
260        res: nn_ptr,
261        a: nn_srcptr,
262        an: slong,
263        b: nn_srcptr,
264        bn: slong,
265        lo: slong,
266        hi: slong,
267        radix: *const radix_struct,
268    );
269    pub fn radix_mulmid_KS(
270        res: nn_ptr,
271        a: nn_srcptr,
272        an: slong,
273        b: nn_srcptr,
274        bn: slong,
275        lo: slong,
276        hi: slong,
277        radix: *const radix_struct,
278    );
279    pub fn radix_mulmid_naive(
280        res: nn_ptr,
281        a: nn_srcptr,
282        an: slong,
283        b: nn_srcptr,
284        bn: slong,
285        lo: slong,
286        hi: slong,
287        radix: *const radix_struct,
288    );
289    #[link_name = "radix_mulmid__extern"]
290    pub fn radix_mulmid(
291        res: nn_ptr,
292        a: nn_srcptr,
293        an: slong,
294        b: nn_srcptr,
295        bn: slong,
296        lo: slong,
297        hi: slong,
298        radix: *const radix_struct,
299    );
300    #[link_name = "radix_mul__extern"]
301    pub fn radix_mul(
302        res: nn_ptr,
303        a: nn_srcptr,
304        an: slong,
305        b: nn_srcptr,
306        bn: slong,
307        radix: *const radix_struct,
308    );
309    #[link_name = "radix_sqr__extern"]
310    pub fn radix_sqr(res: nn_ptr, a: nn_srcptr, an: slong, radix: *const radix_struct);
311    #[link_name = "radix_mul_two__extern"]
312    pub fn radix_mul_two(res: nn_ptr, a: nn_srcptr, an: slong, radix: *const radix_struct)
313        -> ulong;
314    pub fn radix_divrem_1(
315        res: nn_ptr,
316        a: nn_srcptr,
317        an: slong,
318        d: ulong,
319        radix: *const radix_struct,
320    ) -> ulong;
321    pub fn radix_divexact_1(
322        res: nn_ptr,
323        a: nn_srcptr,
324        an: slong,
325        d: ulong,
326        radix: *const radix_struct,
327    );
328    pub fn radix_divrem_two(
329        res: nn_ptr,
330        a: nn_srcptr,
331        an: slong,
332        radix: *const radix_struct,
333    ) -> ulong;
334    pub fn radix_inv_approx_basecase(
335        q: nn_ptr,
336        a: nn_srcptr,
337        an: slong,
338        n: slong,
339        radix: *const radix_struct,
340    );
341    pub fn radix_inv_approx(
342        q: nn_ptr,
343        a: nn_srcptr,
344        an: slong,
345        n: slong,
346        radix: *const radix_struct,
347    );
348    pub fn radix_div_approx_invmul(
349        Q: nn_ptr,
350        B: nn_srcptr,
351        Bn: slong,
352        A: nn_srcptr,
353        An: slong,
354        n: slong,
355        radix: *const radix_struct,
356    );
357    pub fn radix_div_approx(
358        Q: nn_ptr,
359        B: nn_srcptr,
360        Bn: slong,
361        A: nn_srcptr,
362        An: slong,
363        n: slong,
364        radix: *const radix_struct,
365    );
366    pub fn radix_divrem_preinv(
367        q: nn_ptr,
368        r: nn_ptr,
369        a: nn_srcptr,
370        an: slong,
371        b: nn_srcptr,
372        bn: slong,
373        binv: nn_srcptr,
374        binvn: slong,
375        radix: *const radix_struct,
376    );
377    pub fn radix_divrem_via_mpn(
378        q: nn_ptr,
379        r: nn_ptr,
380        a: nn_srcptr,
381        an: slong,
382        b: nn_srcptr,
383        bn: slong,
384        radix: *const radix_struct,
385    );
386    pub fn radix_divrem_newton(
387        q: nn_ptr,
388        r: nn_ptr,
389        a: nn_srcptr,
390        an: slong,
391        b: nn_srcptr,
392        bn: slong,
393        radix: *const radix_struct,
394    );
395    pub fn radix_divrem_newton_karp_markstein(
396        Q: nn_ptr,
397        R: nn_ptr,
398        A: nn_srcptr,
399        An: slong,
400        B: nn_srcptr,
401        Bn: slong,
402        radix: *const radix_struct,
403    );
404    pub fn radix_divrem(
405        q: nn_ptr,
406        r: nn_ptr,
407        a: nn_srcptr,
408        an: slong,
409        b: nn_srcptr,
410        bn: slong,
411        radix: *const radix_struct,
412    );
413    pub fn radix_div(
414        q: nn_ptr,
415        a: nn_srcptr,
416        an: slong,
417        b: nn_srcptr,
418        bn: slong,
419        radix: *const radix_struct,
420    ) -> libc::c_int;
421    pub fn radix_divexact(
422        q: nn_ptr,
423        a: nn_srcptr,
424        an: slong,
425        b: nn_srcptr,
426        bn: slong,
427        radix: *const radix_struct,
428    );
429    pub fn radix_invmod_bn(
430        res: nn_ptr,
431        x: nn_srcptr,
432        xn: slong,
433        n: slong,
434        radix: *const radix_struct,
435    ) -> libc::c_int;
436    #[link_name = "radix_cmp_bn_half__extern"]
437    pub fn radix_cmp_bn_half(x: nn_srcptr, n: slong, radix: *const radix_struct) -> libc::c_int;
438    pub fn radix_rsqrt_1_approx_basecase(
439        res: nn_ptr,
440        a: ulong,
441        n: slong,
442        radix: *const radix_struct,
443    );
444    pub fn radix_rsqrt_1_approx(res: nn_ptr, a: ulong, n: slong, radix: *const radix_struct);
445    pub fn radix_powers_clear(powers: *mut radix_powers_struct);
446    pub fn radix_get_mpn_basecase(
447        res: nn_ptr,
448        a: nn_srcptr,
449        an: slong,
450        radix: *const radix_struct,
451    ) -> slong;
452    pub fn radix_get_mpn_divconquer(
453        res: nn_ptr,
454        a: nn_srcptr,
455        an: slong,
456        radix: *const radix_struct,
457    ) -> slong;
458    pub fn radix_get_mpn(res: nn_ptr, a: nn_srcptr, an: slong, radix: *const radix_struct)
459        -> slong;
460    pub fn radix_set_mpn_basecase(
461        res: nn_ptr,
462        a: nn_srcptr,
463        an: slong,
464        radix: *const radix_struct,
465    ) -> slong;
466    pub fn radix_set_mpn_divconquer(
467        res: nn_ptr,
468        a: nn_srcptr,
469        an: slong,
470        radix: *const radix_struct,
471    ) -> slong;
472    pub fn radix_set_mpn(res: nn_ptr, a: nn_srcptr, an: slong, radix: *const radix_struct)
473        -> slong;
474    pub fn radix_set_mpn_need_alloc(n: slong, radix: *const radix_struct) -> slong;
475    pub fn radix_get_str_decimal(
476        res: *mut libc::c_char,
477        x: nn_srcptr,
478        n: slong,
479        negative: libc::c_int,
480        radix: *const radix_struct,
481    ) -> *mut libc::c_char;
482    pub fn radix_get_str_sum(
483        res: *mut libc::c_char,
484        x: nn_srcptr,
485        n: slong,
486        negative: libc::c_int,
487        ascending: libc::c_int,
488        radix: *const radix_struct,
489    ) -> *mut libc::c_char;
490    pub fn gr_ctx_init_radix_integer(ctx: *mut gr_ctx_struct, b: ulong, exp: libc::c_uint);
491    pub fn radix_integer_init(res: *mut radix_integer_struct, radix: *const radix_struct);
492    pub fn radix_integer_clear(res: *mut radix_integer_struct, radix: *const radix_struct);
493    pub fn radix_integer_fit_limbs(
494        res: *mut radix_integer_struct,
495        nlimbs: slong,
496        radix: *const radix_struct,
497    ) -> nn_ptr;
498    pub fn radix_integer_zero(res: *mut radix_integer_struct, radix: *const radix_struct);
499    pub fn radix_integer_rand_limbs(
500        res: *mut radix_integer_struct,
501        state: *mut flint_rand_struct,
502        max_limbs: slong,
503        radix: *const radix_struct,
504    );
505    pub fn radix_integer_randtest_limbs(
506        res: *mut radix_integer_struct,
507        state: *mut flint_rand_struct,
508        max_limbs: slong,
509        radix: *const radix_struct,
510    );
511    pub fn radix_integer_one(res: *mut radix_integer_struct, radix: *const radix_struct);
512    pub fn radix_integer_neg_one(res: *mut radix_integer_struct, radix: *const radix_struct);
513    pub fn radix_integer_is_zero(
514        x: *const radix_integer_struct,
515        radix: *const radix_struct,
516    ) -> libc::c_int;
517    pub fn radix_integer_is_one(
518        x: *const radix_integer_struct,
519        radix: *const radix_struct,
520    ) -> libc::c_int;
521    pub fn radix_integer_is_neg_one(
522        x: *const radix_integer_struct,
523        radix: *const radix_struct,
524    ) -> libc::c_int;
525    pub fn radix_integer_equal(
526        x: *const radix_integer_struct,
527        y: *const radix_integer_struct,
528        radix: *const radix_struct,
529    ) -> libc::c_int;
530    pub fn radix_integer_cmp(
531        x: *const radix_integer_struct,
532        y: *const radix_integer_struct,
533        radix: *const radix_struct,
534    ) -> libc::c_int;
535    pub fn radix_integer_cmpabs(
536        x: *const radix_integer_struct,
537        y: *const radix_integer_struct,
538        radix: *const radix_struct,
539    ) -> libc::c_int;
540    pub fn radix_integer_set(
541        res: *mut radix_integer_struct,
542        x: *const radix_integer_struct,
543        radix: *const radix_struct,
544    );
545    pub fn radix_integer_set_ui(
546        res: *mut radix_integer_struct,
547        x: ulong,
548        radix: *const radix_struct,
549    );
550    pub fn radix_integer_set_si(
551        res: *mut radix_integer_struct,
552        x: slong,
553        radix: *const radix_struct,
554    );
555    pub fn radix_integer_set_fmpz(
556        res: *mut radix_integer_struct,
557        x: *const fmpz,
558        radix: *const radix_struct,
559    );
560    pub fn radix_integer_get_fmpz(
561        res: *mut fmpz,
562        x: *const radix_integer_struct,
563        radix: *const radix_struct,
564    );
565    pub fn radix_integer_neg(
566        res: *mut radix_integer_struct,
567        x: *const radix_integer_struct,
568        radix: *const radix_struct,
569    );
570    pub fn radix_integer_abs(
571        res: *mut radix_integer_struct,
572        x: *const radix_integer_struct,
573        radix: *const radix_struct,
574    );
575    pub fn radix_integer_sgn(
576        x: *const radix_integer_struct,
577        radix: *const radix_struct,
578    ) -> libc::c_int;
579    pub fn radix_integer_add(
580        res: *mut radix_integer_struct,
581        x: *const radix_integer_struct,
582        y: *const radix_integer_struct,
583        radix: *const radix_struct,
584    );
585    pub fn radix_integer_sub(
586        res: *mut radix_integer_struct,
587        x: *const radix_integer_struct,
588        y: *const radix_integer_struct,
589        radix: *const radix_struct,
590    );
591    pub fn radix_integer_mul(
592        res: *mut radix_integer_struct,
593        x: *const radix_integer_struct,
594        y: *const radix_integer_struct,
595        radix: *const radix_struct,
596    );
597    pub fn radix_integer_is_normalised(
598        x: *const radix_integer_struct,
599        radix: *const radix_struct,
600    ) -> libc::c_int;
601    #[link_name = "radix_integer_size_limbs__extern"]
602    pub fn radix_integer_size_limbs(
603        x: *const radix_integer_struct,
604        UNUSED_radix: *const radix_struct,
605    ) -> slong;
606    #[link_name = "radix_integer_ssize_limbs__extern"]
607    pub fn radix_integer_ssize_limbs(
608        x: *const radix_integer_struct,
609        UNUSED_radix: *const radix_struct,
610    ) -> slong;
611    #[link_name = "radix_integer_size_digits__extern"]
612    pub fn radix_integer_size_digits(
613        x: *const radix_integer_struct,
614        radix: *const radix_struct,
615    ) -> slong;
616    #[link_name = "radix_integer_ssize_digits__extern"]
617    pub fn radix_integer_ssize_digits(
618        x: *const radix_integer_struct,
619        radix: *const radix_struct,
620    ) -> slong;
621    #[link_name = "radix_integer_get_limb__extern"]
622    pub fn radix_integer_get_limb(
623        x: *const radix_integer_struct,
624        n: slong,
625        UNUSED_radix: *const radix_struct,
626    ) -> ulong;
627    pub fn radix_integer_set_limb(
628        res: *mut radix_integer_struct,
629        x: *const radix_integer_struct,
630        index: slong,
631        c: ulong,
632        radix: *const radix_struct,
633    );
634    pub fn radix_integer_get_digit(
635        x: *const radix_integer_struct,
636        index: slong,
637        radix: *const radix_struct,
638    ) -> ulong;
639    pub fn radix_integer_set_digit(
640        res: *mut radix_integer_struct,
641        x: *const radix_integer_struct,
642        index: slong,
643        c: ulong,
644        radix: *const radix_struct,
645    );
646    pub fn radix_integer_lshift_limbs(
647        res: *mut radix_integer_struct,
648        x: *const radix_integer_struct,
649        n: slong,
650        radix: *const radix_struct,
651    );
652    pub fn radix_integer_rshift_limbs(
653        res: *mut radix_integer_struct,
654        x: *const radix_integer_struct,
655        n: slong,
656        radix: *const radix_struct,
657    );
658    pub fn radix_integer_lshift_digits(
659        res: *mut radix_integer_struct,
660        x: *const radix_integer_struct,
661        n: slong,
662        radix: *const radix_struct,
663    );
664    pub fn radix_integer_rshift_digits(
665        res: *mut radix_integer_struct,
666        x: *const radix_integer_struct,
667        n: slong,
668        radix: *const radix_struct,
669    );
670    #[link_name = "radix_integer_valuation_limbs__extern"]
671    pub fn radix_integer_valuation_limbs(
672        x: *const radix_integer_struct,
673        UNUSED_radix: *const radix_struct,
674    ) -> slong;
675    #[link_name = "radix_integer_valuation_digits__extern"]
676    pub fn radix_integer_valuation_digits(
677        x: *const radix_integer_struct,
678        radix: *const radix_struct,
679    ) -> slong;
680    pub fn radix_integer_trunc_limbs(
681        res: *mut radix_integer_struct,
682        x: *const radix_integer_struct,
683        n: slong,
684        radix: *const radix_struct,
685    );
686    pub fn radix_integer_mod_limbs(
687        res: *mut radix_integer_struct,
688        x: *const radix_integer_struct,
689        n: slong,
690        radix: *const radix_struct,
691    );
692    pub fn radix_integer_smod_limbs(
693        res: *mut radix_integer_struct,
694        x: *const radix_integer_struct,
695        n: slong,
696        radix: *const radix_struct,
697    );
698    pub fn radix_integer_mullow_limbs(
699        res: *mut radix_integer_struct,
700        x: *const radix_integer_struct,
701        y: *const radix_integer_struct,
702        n: slong,
703        radix: *const radix_struct,
704    );
705    pub fn radix_integer_invmod_limbs(
706        res: *mut radix_integer_struct,
707        x: *const radix_integer_struct,
708        n: slong,
709        radix: *const radix_struct,
710    ) -> libc::c_int;
711    pub fn radix_integer_div(
712        q: *mut radix_integer_struct,
713        a: *const radix_integer_struct,
714        b: *const radix_integer_struct,
715        radix: *const radix_struct,
716    ) -> libc::c_int;
717    pub fn radix_integer_divexact(
718        q: *mut radix_integer_struct,
719        a: *const radix_integer_struct,
720        b: *const radix_integer_struct,
721        radix: *const radix_struct,
722    );
723    pub fn radix_integer_tdiv_qr(
724        q: *mut radix_integer_struct,
725        r: *mut radix_integer_struct,
726        a: *const radix_integer_struct,
727        b: *const radix_integer_struct,
728        radix: *const radix_struct,
729    );
730    pub fn radix_integer_fdiv_qr(
731        q: *mut radix_integer_struct,
732        r: *mut radix_integer_struct,
733        a: *const radix_integer_struct,
734        b: *const radix_integer_struct,
735        radix: *const radix_struct,
736    );
737    pub fn radix_integer_cdiv_qr(
738        q: *mut radix_integer_struct,
739        r: *mut radix_integer_struct,
740        a: *const radix_integer_struct,
741        b: *const radix_integer_struct,
742        radix: *const radix_struct,
743    );
744    pub fn radix_integer_tdiv_q(
745        q: *mut radix_integer_struct,
746        a: *const radix_integer_struct,
747        b: *const radix_integer_struct,
748        radix: *const radix_struct,
749    );
750    pub fn radix_integer_fdiv_q(
751        q: *mut radix_integer_struct,
752        a: *const radix_integer_struct,
753        b: *const radix_integer_struct,
754        radix: *const radix_struct,
755    );
756    pub fn radix_integer_cdiv_q(
757        q: *mut radix_integer_struct,
758        a: *const radix_integer_struct,
759        b: *const radix_integer_struct,
760        radix: *const radix_struct,
761    );
762    pub fn radix_integer_tdiv_r(
763        r: *mut radix_integer_struct,
764        a: *const radix_integer_struct,
765        b: *const radix_integer_struct,
766        radix: *const radix_struct,
767    );
768    pub fn radix_integer_fdiv_r(
769        r: *mut radix_integer_struct,
770        a: *const radix_integer_struct,
771        b: *const radix_integer_struct,
772        radix: *const radix_struct,
773    );
774    pub fn radix_integer_cdiv_r(
775        r: *mut radix_integer_struct,
776        a: *const radix_integer_struct,
777        b: *const radix_integer_struct,
778        radix: *const radix_struct,
779    );
780    #[link_name = "n_div_precomp_init__extern"]
781    pub fn n_div_precomp_init(pre: *mut n_div_precomp_struct, d: ulong);
782    #[link_name = "n_div_precomp_m0__extern"]
783    pub fn n_div_precomp_m0(x: ulong, pre: *const n_div_precomp_struct) -> ulong;
784    #[link_name = "n_div_precomp_c0__extern"]
785    pub fn n_div_precomp_c0(x: ulong, pre: *const n_div_precomp_struct) -> ulong;
786    #[link_name = "n_incsat__extern"]
787    pub fn n_incsat(x: ulong) -> ulong;
788    #[link_name = "n_div_precomp_c1_bounded__extern"]
789    pub fn n_div_precomp_c1_bounded(x: ulong, pre: *const n_div_precomp_struct) -> ulong;
790    #[link_name = "n_div_precomp_c1__extern"]
791    pub fn n_div_precomp_c1(x: ulong, pre: *const n_div_precomp_struct) -> ulong;
792    #[link_name = "n_div_precomp__extern"]
793    pub fn n_div_precomp(x: ulong, pre: *const n_div_precomp_struct) -> ulong;
794    #[link_name = "n_div_precomp_bounded__extern"]
795    pub fn n_div_precomp_bounded(x: ulong, pre: *const n_div_precomp_struct) -> ulong;
796    #[link_name = "n_rem_precomp_m0__extern"]
797    pub fn n_rem_precomp_m0(x: ulong, UNUSED_d: ulong, pre: *const n_div_precomp_struct) -> ulong;
798    #[link_name = "n_rem_precomp_c0__extern"]
799    pub fn n_rem_precomp_c0(x: ulong, d: ulong, pre: *const n_div_precomp_struct) -> ulong;
800    #[link_name = "n_rem_precomp_c1__extern"]
801    pub fn n_rem_precomp_c1(x: ulong, d: ulong, pre: *const n_div_precomp_struct) -> ulong;
802    #[link_name = "n_rem_precomp_bounded__extern"]
803    pub fn n_rem_precomp_bounded(x: ulong, d: ulong, pre: *const n_div_precomp_struct) -> ulong;
804    #[link_name = "n_rem_precomp_c1_bounded__extern"]
805    pub fn n_rem_precomp_c1_bounded(x: ulong, d: ulong, pre: *const n_div_precomp_struct) -> ulong;
806    #[link_name = "n_rem_precomp__extern"]
807    pub fn n_rem_precomp(x: ulong, d: ulong, pre: *const n_div_precomp_struct) -> ulong;
808    #[link_name = "n_divrem_precomp_m0__extern"]
809    pub fn n_divrem_precomp_m0(
810        r: *mut ulong,
811        x: ulong,
812        d: ulong,
813        pre: *const n_div_precomp_struct,
814    ) -> ulong;
815    #[link_name = "n_divrem_precomp_c0__extern"]
816    pub fn n_divrem_precomp_c0(
817        r: *mut ulong,
818        x: ulong,
819        d: ulong,
820        pre: *const n_div_precomp_struct,
821    ) -> ulong;
822    #[link_name = "n_divrem_precomp_c1__extern"]
823    pub fn n_divrem_precomp_c1(
824        r: *mut ulong,
825        x: ulong,
826        d: ulong,
827        pre: *const n_div_precomp_struct,
828    ) -> ulong;
829    #[link_name = "n_divrem_precomp_c1_bounded__extern"]
830    pub fn n_divrem_precomp_c1_bounded(
831        r: *mut ulong,
832        x: ulong,
833        d: ulong,
834        pre: *const n_div_precomp_struct,
835    ) -> ulong;
836    #[link_name = "n_divrem_precomp__extern"]
837    pub fn n_divrem_precomp(
838        r: *mut ulong,
839        x: ulong,
840        d: ulong,
841        pre: *const n_div_precomp_struct,
842    ) -> ulong;
843    #[link_name = "n_divrem_precomp_bounded__extern"]
844    pub fn n_divrem_precomp_bounded(
845        r: *mut ulong,
846        x: ulong,
847        d: ulong,
848        pre: *const n_div_precomp_struct,
849    ) -> ulong;
850}