1use 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}