1#![allow(non_camel_case_types)]
2#![allow(non_snake_case)]
3
4use crate::deps::*;
7use crate::flint::*;
8use crate::fmpz::{fmpz, fmpz_t};
9use crate::fmpz_mat::fmpz_mat_struct;
10use crate::fmpz_mod::fmpz_mod_ctx_struct;
11use crate::fmpz_poly::fmpz_poly_struct;
12use libc::{c_char, c_int, c_void, FILE};
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone, Hash)]
16pub struct fmpz_mod_poly_struct {
17 pub coeffs: *mut fmpz,
18 pub alloc: mp_limb_signed_t,
19 pub length: mp_limb_signed_t,
20}
21
22pub type fmpz_mod_poly_t = [fmpz_mod_poly_struct; 1usize];
23
24#[repr(C)]
25#[derive(Debug, Copy, Clone)]
26pub struct fmpz_mod_poly_res_struct {
27 pub res: fmpz_t,
28 pub lc: fmpz_t,
29 pub len0: mp_limb_signed_t,
30 pub len1: mp_limb_signed_t,
31 pub off: mp_limb_signed_t,
32}
33
34pub type fmpz_mod_poly_res_t = [fmpz_mod_poly_res_struct; 1usize];
35
36#[repr(C)]
37#[derive(Debug, Copy, Clone)]
38pub struct fmpz_mod_poly_frobenius_powers_2exp_struct {
39 pub pow: *mut fmpz_mod_poly_struct,
40 pub len: mp_limb_signed_t,
41}
42
43pub type fmpz_mod_poly_frobenius_powers_2exp_t =
44 [fmpz_mod_poly_frobenius_powers_2exp_struct; 1usize];
45
46#[repr(C)]
47#[derive(Debug, Copy, Clone)]
48pub struct fmpz_mod_poly_frobenius_powers_struct {
49 pub pow: *mut fmpz_mod_poly_struct,
50 pub len: mp_limb_signed_t,
51}
52
53pub type fmpz_mod_poly_frobenius_powers_t = [fmpz_mod_poly_frobenius_powers_struct; 1usize];
54
55#[repr(C)]
56#[derive(Debug, Copy, Clone)]
57pub struct fmpz_mod_poly_matrix_precompute_arg_t {
58 pub A: *mut fmpz_mat_struct,
59 pub poly1: *mut fmpz_mod_poly_struct,
60 pub poly2: *mut fmpz_mod_poly_struct,
61 pub poly2inv: *mut fmpz_mod_poly_struct,
62 pub ctx: *const fmpz_mod_ctx_struct,
63}
64
65#[repr(C)]
66#[derive(Debug, Copy, Clone)]
67pub struct fmpz_mod_poly_compose_mod_precomp_preinv_arg_t {
68 pub A: *mut fmpz_mat_struct,
69 pub res: *mut fmpz_mod_poly_struct,
70 pub poly1: *mut fmpz_mod_poly_struct,
71 pub poly3: *mut fmpz_mod_poly_struct,
72 pub poly3inv: *mut fmpz_mod_poly_struct,
73 pub ctx: *const fmpz_mod_ctx_struct,
74}
75
76#[repr(C)]
77#[derive(Debug, Copy, Clone)]
78pub struct fmpz_mod_poly_radix_struct {
79 pub V: *mut fmpz,
80 pub W: *mut fmpz,
81 pub Rpow: *mut *mut fmpz,
82 pub Rinv: *mut *mut fmpz,
83 pub degR: mp_limb_signed_t,
84 pub k: mp_limb_signed_t,
85 pub invL: fmpz,
86}
87
88pub type fmpz_mod_poly_radix_t = [fmpz_mod_poly_radix_struct; 1usize];
89
90#[repr(C)]
91#[derive(Debug, Copy, Clone)]
92pub struct fmpz_mod_berlekamp_massey_struct {
93 pub npoints: mp_limb_signed_t,
94 pub R0: fmpz_mod_poly_t,
95 pub R1: fmpz_mod_poly_t,
96 pub V0: fmpz_mod_poly_t,
97 pub V1: fmpz_mod_poly_t,
98 pub qt: fmpz_mod_poly_t,
99 pub rt: fmpz_mod_poly_t,
100 pub points: fmpz_mod_poly_t,
101}
102
103pub type fmpz_mod_berlekamp_massey_t = [fmpz_mod_berlekamp_massey_struct; 1usize];
104
105extern "C" {
106 pub fn fmpz_mod_poly_init(poly: *mut fmpz_mod_poly_struct, ctx: *const fmpz_mod_ctx_struct);
107 pub fn fmpz_mod_poly_init2(
108 poly: *mut fmpz_mod_poly_struct,
109 alloc: mp_limb_signed_t,
110 ctx: *const fmpz_mod_ctx_struct,
111 );
112 pub fn fmpz_mod_poly_clear(poly: *mut fmpz_mod_poly_struct, ctx: *const fmpz_mod_ctx_struct);
113 pub fn fmpz_mod_poly_realloc(
114 poly: *mut fmpz_mod_poly_struct,
115 alloc: mp_limb_signed_t,
116 ctx: *const fmpz_mod_ctx_struct,
117 );
118 pub fn fmpz_mod_poly_fit_length(
119 poly: *mut fmpz_mod_poly_struct,
120 len: mp_limb_signed_t,
121 ctx: *const fmpz_mod_ctx_struct,
122 );
123 pub fn _fmpz_mod_poly_normalise(poly: *mut fmpz_mod_poly_struct);
124 pub fn _fmpz_mod_poly_set_length(poly: *mut fmpz_mod_poly_struct, len: mp_limb_signed_t);
125 pub fn fmpz_mod_poly_truncate(
126 poly: *mut fmpz_mod_poly_struct,
127 len: mp_limb_signed_t,
128 ctx: *const fmpz_mod_ctx_struct,
129 );
130 pub fn fmpz_mod_poly_set_trunc(
131 res: *mut fmpz_mod_poly_struct,
132 poly: *const fmpz_mod_poly_struct,
133 n: mp_limb_signed_t,
134 ctx: *const fmpz_mod_ctx_struct,
135 );
136 pub fn fmpz_mod_poly_randtest(
137 f: *mut fmpz_mod_poly_struct,
138 state: *const flint_rand_s,
139 len: mp_limb_signed_t,
140 ctx: *const fmpz_mod_ctx_struct,
141 );
142 pub fn fmpz_mod_poly_randtest_irreducible(
143 f: *mut fmpz_mod_poly_struct,
144 state: *const flint_rand_s,
145 len: mp_limb_signed_t,
146 ctx: *const fmpz_mod_ctx_struct,
147 );
148 pub fn fmpz_mod_poly_randtest_not_zero(
149 f: *mut fmpz_mod_poly_struct,
150 state: *const flint_rand_s,
151 len: mp_limb_signed_t,
152 ctx: *const fmpz_mod_ctx_struct,
153 );
154 pub fn fmpz_mod_poly_randtest_monic(
155 f: *mut fmpz_mod_poly_struct,
156 state: *const flint_rand_s,
157 len: mp_limb_signed_t,
158 ctx: *const fmpz_mod_ctx_struct,
159 );
160 pub fn fmpz_mod_poly_randtest_monic_irreducible(
161 f: *mut fmpz_mod_poly_struct,
162 state: *const flint_rand_s,
163 len: mp_limb_signed_t,
164 ctx: *const fmpz_mod_ctx_struct,
165 );
166 pub fn fmpz_mod_poly_randtest_monic_primitive(
167 f: *mut fmpz_mod_poly_struct,
168 state: *const flint_rand_s,
169 len: mp_limb_signed_t,
170 ctx: *const fmpz_mod_ctx_struct,
171 );
172 pub fn fmpz_mod_poly_randtest_trinomial(
173 f: *mut fmpz_mod_poly_struct,
174 state: *const flint_rand_s,
175 len: mp_limb_signed_t,
176 ctx: *const fmpz_mod_ctx_struct,
177 );
178 pub fn fmpz_mod_poly_randtest_trinomial_irreducible(
179 f: *mut fmpz_mod_poly_struct,
180 state: *const flint_rand_s,
181 len: mp_limb_signed_t,
182 max_attempts: mp_limb_signed_t,
183 ctx: *const fmpz_mod_ctx_struct,
184 ) -> c_int;
185 pub fn fmpz_mod_poly_randtest_pentomial(
186 f: *mut fmpz_mod_poly_struct,
187 state: *const flint_rand_s,
188 len: mp_limb_signed_t,
189 ctx: *const fmpz_mod_ctx_struct,
190 );
191 pub fn fmpz_mod_poly_randtest_pentomial_irreducible(
192 f: *mut fmpz_mod_poly_struct,
193 state: *const flint_rand_s,
194 len: mp_limb_signed_t,
195 max_attempts: mp_limb_signed_t,
196 ctx: *const fmpz_mod_ctx_struct,
197 ) -> c_int;
198 pub fn fmpz_mod_poly_randtest_sparse_irreducible(
199 poly: *mut fmpz_mod_poly_struct,
200 state: *const flint_rand_s,
201 len: mp_limb_signed_t,
202 ctx: *const fmpz_mod_ctx_struct,
203 );
204 pub fn fmpz_mod_poly_degree(
205 poly: *const fmpz_mod_poly_struct,
206 ctx: *const fmpz_mod_ctx_struct,
207 ) -> mp_limb_signed_t;
208 pub fn fmpz_mod_poly_length(
209 poly: *const fmpz_mod_poly_struct,
210 ctx: *const fmpz_mod_ctx_struct,
211 ) -> mp_limb_signed_t;
212 pub fn fmpz_mod_poly_lead(
213 poly: *const fmpz_mod_poly_struct,
214 ctx: *const fmpz_mod_ctx_struct,
215 ) -> *mut fmpz;
216 pub fn fmpz_mod_poly_is_monic(
217 f: *const fmpz_mod_poly_struct,
218 ctx: *const fmpz_mod_ctx_struct,
219 ) -> c_int;
220 pub fn fmpz_mod_poly_is_one(
221 poly: *const fmpz_mod_poly_struct,
222 ctx: *const fmpz_mod_ctx_struct,
223 ) -> c_int;
224 pub fn fmpz_mod_poly_is_gen(
225 op: *const fmpz_mod_poly_struct,
226 ctx: *const fmpz_mod_ctx_struct,
227 ) -> c_int;
228 pub fn fmpz_mod_poly_set(
229 poly1: *mut fmpz_mod_poly_struct,
230 poly2: *const fmpz_mod_poly_struct,
231 ctx: *const fmpz_mod_ctx_struct,
232 );
233 pub fn fmpz_mod_poly_swap(
234 poly1: *mut fmpz_mod_poly_struct,
235 poly2: *mut fmpz_mod_poly_struct,
236 ctx: *const fmpz_mod_ctx_struct,
237 );
238 pub fn _fmpz_mod_poly_reverse(
239 res: *mut fmpz,
240 poly: *const fmpz,
241 len: mp_limb_signed_t,
242 n: mp_limb_signed_t,
243 );
244 pub fn fmpz_mod_poly_reverse(
245 res: *mut fmpz_mod_poly_struct,
246 poly: *const fmpz_mod_poly_struct,
247 n: mp_limb_signed_t,
248 ctx: *const fmpz_mod_ctx_struct,
249 );
250 pub fn fmpz_mod_poly_zero(poly: *mut fmpz_mod_poly_struct, ctx: *const fmpz_mod_ctx_struct);
251 pub fn fmpz_mod_poly_one(poly: *mut fmpz_mod_poly_struct, ctx: *const fmpz_mod_ctx_struct);
252 pub fn fmpz_mod_poly_gen(poly: *mut fmpz_mod_poly_struct, ctx: *const fmpz_mod_ctx_struct);
253 pub fn fmpz_mod_poly_zero_coeffs(
254 poly: *mut fmpz_mod_poly_struct,
255 i: mp_limb_signed_t,
256 j: mp_limb_signed_t,
257 ctx: *const fmpz_mod_ctx_struct,
258 );
259 pub fn fmpz_mod_poly_set_ui(
260 f: *mut fmpz_mod_poly_struct,
261 x: mp_limb_t,
262 ctx: *const fmpz_mod_ctx_struct,
263 );
264 pub fn fmpz_mod_poly_set_fmpz(
265 poly: *mut fmpz_mod_poly_struct,
266 c: *const fmpz,
267 ctx: *const fmpz_mod_ctx_struct,
268 );
269 pub fn fmpz_mod_poly_set_fmpz_poly(
270 f: *mut fmpz_mod_poly_struct,
271 g: *const fmpz_poly_struct,
272 ctx: *const fmpz_mod_ctx_struct,
273 );
274 pub fn fmpz_mod_poly_get_fmpz_poly(
275 f: *mut fmpz_poly_struct,
276 g: *const fmpz_mod_poly_struct,
277 ctx: *const fmpz_mod_ctx_struct,
278 );
279 pub fn fmpz_mod_poly_equal(
280 poly1: *const fmpz_mod_poly_struct,
281 poly2: *const fmpz_mod_poly_struct,
282 ctx: *const fmpz_mod_ctx_struct,
283 ) -> c_int;
284 pub fn fmpz_mod_poly_equal_trunc(
285 poly1: *const fmpz_mod_poly_struct,
286 poly2: *const fmpz_mod_poly_struct,
287 n: mp_limb_signed_t,
288 ctx: *const fmpz_mod_ctx_struct,
289 ) -> c_int;
290 pub fn fmpz_mod_poly_is_zero(
291 poly: *const fmpz_mod_poly_struct,
292 ctx: *const fmpz_mod_ctx_struct,
293 ) -> c_int;
294 pub fn fmpz_mod_poly_set_coeff_fmpz(
295 poly: *mut fmpz_mod_poly_struct,
296 n: mp_limb_signed_t,
297 x: *const fmpz,
298 ctx: *const fmpz_mod_ctx_struct,
299 );
300 pub fn fmpz_mod_poly_set_coeff_ui(
301 poly: *mut fmpz_mod_poly_struct,
302 n: mp_limb_signed_t,
303 x: mp_limb_t,
304 ctx: *const fmpz_mod_ctx_struct,
305 );
306 pub fn fmpz_mod_poly_set_coeff_si(
307 poly: *mut fmpz_mod_poly_struct,
308 n: mp_limb_signed_t,
309 x: mp_limb_signed_t,
310 ctx: *const fmpz_mod_ctx_struct,
311 );
312 pub fn fmpz_mod_poly_get_coeff_fmpz(
313 x: *mut fmpz,
314 poly: *const fmpz_mod_poly_struct,
315 n: mp_limb_signed_t,
316 ctx: *const fmpz_mod_ctx_struct,
317 );
318 pub fn fmpz_mod_poly_set_coeff_mpz(
319 poly: *mut fmpz_mod_poly_struct,
320 n: mp_limb_signed_t,
321 x: *const __mpz_struct,
322 ctx: *const fmpz_mod_ctx_struct,
323 );
324 pub fn fmpz_mod_poly_get_coeff_mpz(
325 x: *mut __mpz_struct,
326 poly: *const fmpz_mod_poly_struct,
327 n: mp_limb_signed_t,
328 ctx: *const fmpz_mod_ctx_struct,
329 );
330 pub fn _fmpz_mod_poly_shift_left(
331 res: *mut fmpz,
332 poly: *const fmpz,
333 len: mp_limb_signed_t,
334 n: mp_limb_signed_t,
335 );
336 pub fn fmpz_mod_poly_shift_left(
337 f: *mut fmpz_mod_poly_struct,
338 g: *const fmpz_mod_poly_struct,
339 n: mp_limb_signed_t,
340 ctx: *const fmpz_mod_ctx_struct,
341 );
342 pub fn _fmpz_mod_poly_shift_right(
343 res: *mut fmpz,
344 poly: *const fmpz,
345 len: mp_limb_signed_t,
346 n: mp_limb_signed_t,
347 );
348 pub fn fmpz_mod_poly_shift_right(
349 f: *mut fmpz_mod_poly_struct,
350 g: *const fmpz_mod_poly_struct,
351 n: mp_limb_signed_t,
352 ctx: *const fmpz_mod_ctx_struct,
353 );
354 pub fn _fmpz_mod_poly_add(
355 res: *mut fmpz,
356 poly1: *const fmpz,
357 len1: mp_limb_signed_t,
358 poly2: *const fmpz,
359 len2: mp_limb_signed_t,
360 p: *const fmpz,
361 );
362 pub fn fmpz_mod_poly_add(
363 res: *mut fmpz_mod_poly_struct,
364 poly1: *const fmpz_mod_poly_struct,
365 poly2: *const fmpz_mod_poly_struct,
366 ctx: *const fmpz_mod_ctx_struct,
367 );
368 pub fn _fmpz_mod_poly_sub(
369 res: *mut fmpz,
370 poly1: *const fmpz,
371 len1: mp_limb_signed_t,
372 poly2: *const fmpz,
373 len2: mp_limb_signed_t,
374 p: *const fmpz,
375 );
376 pub fn fmpz_mod_poly_add_series(
377 res: *mut fmpz_mod_poly_struct,
378 poly1: *const fmpz_mod_poly_struct,
379 poly2: *const fmpz_mod_poly_struct,
380 n: mp_limb_signed_t,
381 ctx: *const fmpz_mod_ctx_struct,
382 );
383 pub fn fmpz_mod_poly_sub(
384 res: *mut fmpz_mod_poly_struct,
385 poly1: *const fmpz_mod_poly_struct,
386 poly2: *const fmpz_mod_poly_struct,
387 ctx: *const fmpz_mod_ctx_struct,
388 );
389 pub fn _fmpz_mod_poly_neg(
390 res: *mut fmpz,
391 poly: *const fmpz,
392 len: mp_limb_signed_t,
393 p: *const fmpz,
394 );
395 pub fn fmpz_mod_poly_sub_series(
396 res: *mut fmpz_mod_poly_struct,
397 poly1: *const fmpz_mod_poly_struct,
398 poly2: *const fmpz_mod_poly_struct,
399 n: mp_limb_signed_t,
400 ctx: *const fmpz_mod_ctx_struct,
401 );
402 pub fn fmpz_mod_poly_neg(
403 res: *mut fmpz_mod_poly_struct,
404 poly: *const fmpz_mod_poly_struct,
405 ctx: *const fmpz_mod_ctx_struct,
406 );
407 pub fn _fmpz_mod_poly_scalar_mul_fmpz(
408 res: *mut fmpz,
409 poly: *const fmpz,
410 len: mp_limb_signed_t,
411 x: *const fmpz,
412 p: *const fmpz,
413 );
414 pub fn fmpz_mod_poly_scalar_mul_fmpz(
415 res: *mut fmpz_mod_poly_struct,
416 poly: *const fmpz_mod_poly_struct,
417 x: *const fmpz,
418 ctx: *const fmpz_mod_ctx_struct,
419 );
420 pub fn _fmpz_mod_poly_scalar_mul_ui(
421 res: *mut fmpz,
422 poly: *const fmpz,
423 len: mp_limb_signed_t,
424 x: mp_limb_t,
425 p: *const fmpz,
426 );
427 pub fn fmpz_mod_poly_scalar_mul_ui(
428 res: *mut fmpz_mod_poly_struct,
429 poly: *const fmpz_mod_poly_struct,
430 x: mp_limb_t,
431 ctx: *const fmpz_mod_ctx_struct,
432 );
433 pub fn _fmpz_mod_poly_scalar_div_fmpz(
434 res: *mut fmpz,
435 poly: *const fmpz,
436 len: mp_limb_signed_t,
437 x: *const fmpz,
438 p: *const fmpz,
439 );
440 pub fn fmpz_mod_poly_scalar_div_fmpz(
441 res: *mut fmpz_mod_poly_struct,
442 poly: *const fmpz_mod_poly_struct,
443 x: *const fmpz,
444 ctx: *const fmpz_mod_ctx_struct,
445 );
446 pub fn _fmpz_mod_poly_mul(
447 res: *mut fmpz,
448 poly1: *const fmpz,
449 len1: mp_limb_signed_t,
450 poly2: *const fmpz,
451 len2: mp_limb_signed_t,
452 p: *const fmpz,
453 );
454 pub fn fmpz_mod_poly_mul(
455 res: *mut fmpz_mod_poly_struct,
456 poly1: *const fmpz_mod_poly_struct,
457 poly2: *const fmpz_mod_poly_struct,
458 ctx: *const fmpz_mod_ctx_struct,
459 );
460 pub fn _fmpz_mod_poly_mullow(
461 res: *mut fmpz,
462 poly1: *const fmpz,
463 len1: mp_limb_signed_t,
464 poly2: *const fmpz,
465 len2: mp_limb_signed_t,
466 p: *const fmpz,
467 n: mp_limb_signed_t,
468 );
469 pub fn fmpz_mod_poly_mullow(
470 res: *mut fmpz_mod_poly_struct,
471 poly1: *const fmpz_mod_poly_struct,
472 poly2: *const fmpz_mod_poly_struct,
473 n: mp_limb_signed_t,
474 ctx: *const fmpz_mod_ctx_struct,
475 );
476 pub fn _fmpz_mod_poly_sqr(
477 res: *mut fmpz,
478 poly: *const fmpz,
479 len: mp_limb_signed_t,
480 p: *const fmpz,
481 );
482 pub fn fmpz_mod_poly_sqr(
483 res: *mut fmpz_mod_poly_struct,
484 poly: *const fmpz_mod_poly_struct,
485 ctx: *const fmpz_mod_ctx_struct,
486 );
487 pub fn _fmpz_mod_poly_mulmod(
488 res: *mut fmpz,
489 poly1: *const fmpz,
490 len1: mp_limb_signed_t,
491 poly2: *const fmpz,
492 len2: mp_limb_signed_t,
493 f: *const fmpz,
494 lenf: mp_limb_signed_t,
495 p: *const fmpz,
496 );
497 pub fn fmpz_mod_poly_mulmod(
498 res: *mut fmpz_mod_poly_struct,
499 poly1: *const fmpz_mod_poly_struct,
500 poly2: *const fmpz_mod_poly_struct,
501 f: *const fmpz_mod_poly_struct,
502 ctx: *const fmpz_mod_ctx_struct,
503 );
504 pub fn _fmpz_mod_poly_mulmod_preinv(
505 res: *mut fmpz,
506 poly1: *const fmpz,
507 len1: mp_limb_signed_t,
508 poly2: *const fmpz,
509 len2: mp_limb_signed_t,
510 f: *const fmpz,
511 lenf: mp_limb_signed_t,
512 finv: *const fmpz,
513 lenfinv: mp_limb_signed_t,
514 p: *const fmpz,
515 );
516 pub fn fmpz_mod_poly_mulmod_preinv(
517 res: *mut fmpz_mod_poly_struct,
518 poly1: *const fmpz_mod_poly_struct,
519 poly2: *const fmpz_mod_poly_struct,
520 f: *const fmpz_mod_poly_struct,
521 finv: *const fmpz_mod_poly_struct,
522 ctx: *const fmpz_mod_ctx_struct,
523 );
524 pub fn _fmpz_mod_poly_pow(
525 rop: *mut fmpz,
526 op: *const fmpz,
527 len: mp_limb_signed_t,
528 e: mp_limb_t,
529 p: *const fmpz,
530 );
531 pub fn fmpz_mod_poly_pow(
532 rop: *mut fmpz_mod_poly_struct,
533 op: *const fmpz_mod_poly_struct,
534 e: mp_limb_t,
535 ctx: *const fmpz_mod_ctx_struct,
536 );
537 pub fn _fmpz_mod_poly_pow_trunc(
538 res: *mut fmpz,
539 poly: *const fmpz,
540 e: mp_limb_t,
541 trunc: mp_limb_signed_t,
542 p: *const fmpz,
543 );
544 pub fn fmpz_mod_poly_pow_trunc(
545 res: *mut fmpz_mod_poly_struct,
546 poly: *const fmpz_mod_poly_struct,
547 e: mp_limb_t,
548 trunc: mp_limb_signed_t,
549 ctx: *const fmpz_mod_ctx_struct,
550 );
551 pub fn _fmpz_mod_poly_pow_trunc_binexp(
552 res: *mut fmpz,
553 poly: *const fmpz,
554 e: mp_limb_t,
555 trunc: mp_limb_signed_t,
556 p: *const fmpz,
557 );
558 pub fn fmpz_mod_poly_pow_trunc_binexp(
559 res: *mut fmpz_mod_poly_struct,
560 poly: *const fmpz_mod_poly_struct,
561 e: mp_limb_t,
562 trunc: mp_limb_signed_t,
563 ctx: *const fmpz_mod_ctx_struct,
564 );
565 pub fn _fmpz_mod_poly_powmod_ui_binexp(
566 res: *mut fmpz,
567 poly: *const fmpz,
568 e: mp_limb_t,
569 f: *const fmpz,
570 lenf: mp_limb_signed_t,
571 p: *const fmpz,
572 );
573 pub fn fmpz_mod_poly_powmod_ui_binexp(
574 res: *mut fmpz_mod_poly_struct,
575 poly: *const fmpz_mod_poly_struct,
576 e: mp_limb_t,
577 f: *const fmpz_mod_poly_struct,
578 ctx: *const fmpz_mod_ctx_struct,
579 );
580 pub fn _fmpz_mod_poly_powmod_ui_binexp_preinv(
581 res: *mut fmpz,
582 poly: *const fmpz,
583 e: mp_limb_t,
584 f: *const fmpz,
585 lenf: mp_limb_signed_t,
586 finv: *const fmpz,
587 lenfinv: mp_limb_signed_t,
588 p: *const fmpz,
589 );
590 pub fn fmpz_mod_poly_powmod_ui_binexp_preinv(
591 res: *mut fmpz_mod_poly_struct,
592 poly: *const fmpz_mod_poly_struct,
593 e: mp_limb_t,
594 f: *const fmpz_mod_poly_struct,
595 finv: *const fmpz_mod_poly_struct,
596 ctx: *const fmpz_mod_ctx_struct,
597 );
598 pub fn _fmpz_mod_poly_powmod_fmpz_binexp(
599 res: *mut fmpz,
600 poly: *const fmpz,
601 e: *const fmpz,
602 f: *const fmpz,
603 lenf: mp_limb_signed_t,
604 p: *const fmpz,
605 );
606 pub fn fmpz_mod_poly_powmod_fmpz_binexp(
607 res: *mut fmpz_mod_poly_struct,
608 poly: *const fmpz_mod_poly_struct,
609 e: *const fmpz,
610 f: *const fmpz_mod_poly_struct,
611 ctx: *const fmpz_mod_ctx_struct,
612 );
613 pub fn _fmpz_mod_poly_powmod_fmpz_binexp_preinv(
614 res: *mut fmpz,
615 poly: *const fmpz,
616 e: *const fmpz,
617 f: *const fmpz,
618 lenf: mp_limb_signed_t,
619 finv: *const fmpz,
620 lenfinv: mp_limb_signed_t,
621 p: *const fmpz,
622 );
623 pub fn fmpz_mod_poly_powmod_fmpz_binexp_preinv(
624 res: *mut fmpz_mod_poly_struct,
625 poly: *const fmpz_mod_poly_struct,
626 e: *const fmpz,
627 f: *const fmpz_mod_poly_struct,
628 finv: *const fmpz_mod_poly_struct,
629 ctx: *const fmpz_mod_ctx_struct,
630 );
631 pub fn _fmpz_mod_poly_powmod_x_fmpz_preinv(
632 res: *mut fmpz,
633 e: *const fmpz,
634 f: *const fmpz,
635 lenf: mp_limb_signed_t,
636 finv: *const fmpz,
637 lenfinv: mp_limb_signed_t,
638 p: *const fmpz,
639 );
640 pub fn fmpz_mod_poly_powmod_x_fmpz_preinv(
641 res: *mut fmpz_mod_poly_struct,
642 e: *const fmpz,
643 f: *const fmpz_mod_poly_struct,
644 finv: *const fmpz_mod_poly_struct,
645 ctx: *const fmpz_mod_ctx_struct,
646 );
647 pub fn fmpz_mod_poly_powmod_linear_fmpz_preinv(
648 res: *mut fmpz_mod_poly_struct,
649 a: *const fmpz,
650 e: *const fmpz,
651 f: *const fmpz_mod_poly_struct,
652 finv: *const fmpz_mod_poly_struct,
653 ctx: *const fmpz_mod_ctx_struct,
654 );
655 pub fn _fmpz_mod_poly_powers_mod_preinv_naive(
656 res: *mut *mut fmpz,
657 f: *const fmpz,
658 flen: mp_limb_signed_t,
659 n: mp_limb_signed_t,
660 g: *const fmpz,
661 glen: mp_limb_signed_t,
662 ginv: *const fmpz,
663 ginvlen: mp_limb_signed_t,
664 p: *const fmpz,
665 );
666 pub fn fmpz_mod_poly_powers_mod_naive(
667 res: *mut fmpz_mod_poly_struct,
668 f: *const fmpz_mod_poly_struct,
669 n: mp_limb_signed_t,
670 g: *const fmpz_mod_poly_struct,
671 ctx: *const fmpz_mod_ctx_struct,
672 );
673 pub fn _fmpz_mod_poly_powers_mod_preinv_threaded_pool(
674 res: *mut *mut fmpz,
675 f: *const fmpz,
676 flen: mp_limb_signed_t,
677 n: mp_limb_signed_t,
678 g: *const fmpz,
679 glen: mp_limb_signed_t,
680 ginv: *const fmpz,
681 ginvlen: mp_limb_signed_t,
682 p: *const fmpz,
683 threads: *const thread_pool_handle,
684 num_threads: mp_limb_signed_t,
685 );
686 pub fn fmpz_mod_poly_powers_mod_bsgs(
687 res: *mut fmpz_mod_poly_struct,
688 f: *const fmpz_mod_poly_struct,
689 n: mp_limb_signed_t,
690 g: *const fmpz_mod_poly_struct,
691 ctx: *const fmpz_mod_ctx_struct,
692 );
693 pub fn fmpz_mod_poly_frobenius_powers_2exp_precomp(
694 pow: *mut fmpz_mod_poly_frobenius_powers_2exp_struct,
695 f: *const fmpz_mod_poly_struct,
696 finv: *const fmpz_mod_poly_struct,
697 m: mp_limb_t,
698 ctx: *const fmpz_mod_ctx_struct,
699 );
700 pub fn fmpz_mod_poly_frobenius_powers_2exp_clear(
701 pow: *mut fmpz_mod_poly_frobenius_powers_2exp_struct,
702 ctx: *const fmpz_mod_ctx_struct,
703 );
704 pub fn fmpz_mod_poly_frobenius_power(
705 res: *mut fmpz_mod_poly_struct,
706 pow: *const fmpz_mod_poly_frobenius_powers_2exp_struct,
707 f: *const fmpz_mod_poly_struct,
708 m: mp_limb_t,
709 ctx: *const fmpz_mod_ctx_struct,
710 );
711 pub fn fmpz_mod_poly_frobenius_powers_precomp(
712 pow: *mut fmpz_mod_poly_frobenius_powers_struct,
713 f: *const fmpz_mod_poly_struct,
714 finv: *const fmpz_mod_poly_struct,
715 m: mp_limb_t,
716 ctx: *const fmpz_mod_ctx_struct,
717 );
718 pub fn fmpz_mod_poly_frobenius_powers_clear(
719 pow: *mut fmpz_mod_poly_frobenius_powers_struct,
720 ctx: *const fmpz_mod_ctx_struct,
721 );
722 pub fn _fmpz_mod_poly_divrem_basecase(
723 Q: *mut fmpz,
724 R: *mut fmpz,
725 A: *const fmpz,
726 lenA: mp_limb_signed_t,
727 B: *const fmpz,
728 lenB: mp_limb_signed_t,
729 invB: *const fmpz,
730 p: *const fmpz,
731 );
732 pub fn fmpz_mod_poly_divrem_basecase(
733 Q: *mut fmpz_mod_poly_struct,
734 R: *mut fmpz_mod_poly_struct,
735 A: *const fmpz_mod_poly_struct,
736 B: *const fmpz_mod_poly_struct,
737 ctx: *const fmpz_mod_ctx_struct,
738 );
739 pub fn _fmpz_mod_poly_div_basecase(
740 Q: *mut fmpz,
741 R: *mut fmpz,
742 A: *const fmpz,
743 lenA: mp_limb_signed_t,
744 B: *const fmpz,
745 lenB: mp_limb_signed_t,
746 invB: *const fmpz,
747 p: *const fmpz,
748 );
749 pub fn fmpz_mod_poly_div_basecase(
750 Q: *mut fmpz_mod_poly_struct,
751 A: *mut fmpz_mod_poly_struct,
752 B: *const fmpz_mod_poly_struct,
753 ctx: *const fmpz_mod_ctx_struct,
754 );
755 pub fn _fmpz_mod_poly_div_newton_n_preinv(
756 Q: *mut fmpz,
757 A: *const fmpz,
758 lenA: mp_limb_signed_t,
759 B: *const fmpz,
760 lenB: mp_limb_signed_t,
761 Binv: *const fmpz,
762 lenBinv: mp_limb_signed_t,
763 mod_: *const fmpz,
764 );
765 pub fn fmpz_mod_poly_div_newton_n_preinv(
766 Q: *mut fmpz_mod_poly_struct,
767 A: *const fmpz_mod_poly_struct,
768 B: *const fmpz_mod_poly_struct,
769 Binv: *const fmpz_mod_poly_struct,
770 ctx: *const fmpz_mod_ctx_struct,
771 );
772 pub fn _fmpz_mod_poly_divrem_newton_n_preinv(
773 Q: *mut fmpz,
774 R: *mut fmpz,
775 A: *const fmpz,
776 lenA: mp_limb_signed_t,
777 B: *const fmpz,
778 lenB: mp_limb_signed_t,
779 Binv: *const fmpz,
780 lenBinv: mp_limb_signed_t,
781 mod_: *const fmpz,
782 );
783 pub fn fmpz_mod_poly_divrem_newton_n_preinv(
784 Q: *mut fmpz_mod_poly_struct,
785 R: *mut fmpz_mod_poly_struct,
786 A: *const fmpz_mod_poly_struct,
787 B: *const fmpz_mod_poly_struct,
788 Binv: *const fmpz_mod_poly_struct,
789 ctx: *const fmpz_mod_ctx_struct,
790 );
791 pub fn fmpz_mod_poly_remove(
792 f: *mut fmpz_mod_poly_struct,
793 p: *const fmpz_mod_poly_struct,
794 ctx: *const fmpz_mod_ctx_struct,
795 ) -> mp_limb_t;
796 pub fn _fmpz_mod_poly_rem_basecase(
797 R: *mut fmpz,
798 A: *const fmpz,
799 lenA: mp_limb_signed_t,
800 B: *const fmpz,
801 lenB: mp_limb_signed_t,
802 invB: *const fmpz,
803 p: *const fmpz,
804 );
805 pub fn fmpz_mod_poly_rem_basecase(
806 R: *mut fmpz_mod_poly_struct,
807 A: *const fmpz_mod_poly_struct,
808 B: *const fmpz_mod_poly_struct,
809 ctx: *const fmpz_mod_ctx_struct,
810 );
811 pub fn _fmpz_mod_poly_divrem_divconquer_recursive(
812 Q: *mut fmpz,
813 BQ: *mut fmpz,
814 W: *const fmpz,
815 A: *const fmpz,
816 B: *const fmpz,
817 lenB: mp_limb_signed_t,
818 invB: *const fmpz,
819 p: *const fmpz,
820 );
821 pub fn _fmpz_mod_poly_divrem_divconquer(
822 Q: *mut fmpz,
823 R: *mut fmpz,
824 A: *const fmpz,
825 lenA: mp_limb_signed_t,
826 B: *const fmpz,
827 lenB: mp_limb_signed_t,
828 invB: *const fmpz,
829 p: *const fmpz,
830 );
831 pub fn fmpz_mod_poly_divrem_divconquer(
832 Q: *mut fmpz_mod_poly_struct,
833 R: *mut fmpz_mod_poly_struct,
834 A: *const fmpz_mod_poly_struct,
835 B: *const fmpz_mod_poly_struct,
836 ctx: *const fmpz_mod_ctx_struct,
837 );
838 pub fn _fmpz_mod_poly_divrem(
839 Q: *mut fmpz,
840 R: *mut fmpz,
841 A: *const fmpz,
842 lenA: mp_limb_signed_t,
843 B: *const fmpz,
844 lenB: mp_limb_signed_t,
845 invB: *const fmpz,
846 p: *const fmpz,
847 );
848 pub fn fmpz_mod_poly_divrem(
849 Q: *mut fmpz_mod_poly_struct,
850 R: *mut fmpz_mod_poly_struct,
851 A: *const fmpz_mod_poly_struct,
852 B: *const fmpz_mod_poly_struct,
853 ctx: *const fmpz_mod_ctx_struct,
854 );
855 pub fn _fmpz_mod_poly_divrem_f(
856 f: *mut fmpz,
857 Q: *mut fmpz,
858 R: *mut fmpz,
859 A: *const fmpz,
860 lenA: mp_limb_signed_t,
861 B: *const fmpz,
862 lenB: mp_limb_signed_t,
863 p: *const fmpz,
864 );
865 pub fn fmpz_mod_poly_divrem_f(
866 f: *mut fmpz,
867 Q: *mut fmpz_mod_poly_struct,
868 R: *mut fmpz_mod_poly_struct,
869 A: *const fmpz_mod_poly_struct,
870 B: *const fmpz_mod_poly_struct,
871 ctx: *const fmpz_mod_ctx_struct,
872 );
873 pub fn _fmpz_mod_poly_rem(
874 R: *mut fmpz,
875 A: *const fmpz,
876 lenA: mp_limb_signed_t,
877 B: *const fmpz,
878 lenB: mp_limb_signed_t,
879 invB: *const fmpz,
880 p: *const fmpz,
881 );
882 pub fn fmpz_mod_poly_rem(
883 R: *mut fmpz_mod_poly_struct,
884 A: *const fmpz_mod_poly_struct,
885 B: *const fmpz_mod_poly_struct,
886 ctx: *const fmpz_mod_ctx_struct,
887 );
888 pub fn fmpz_mod_poly_rem_f(
889 f: *mut fmpz,
890 R: *mut fmpz_mod_poly_struct,
891 A: *const fmpz_mod_poly_struct,
892 B: *const fmpz_mod_poly_struct,
893 ctx: *const fmpz_mod_ctx_struct,
894 );
895 pub fn _fmpz_mod_poly_inv_series_newton(
896 Qinv: *mut fmpz,
897 Q: *const fmpz,
898 n: mp_limb_signed_t,
899 cinv: *const fmpz,
900 p: *const fmpz,
901 );
902 pub fn fmpz_mod_poly_inv_series_newton(
903 Qinv: *mut fmpz_mod_poly_struct,
904 Q: *const fmpz_mod_poly_struct,
905 n: mp_limb_signed_t,
906 ctx: *const fmpz_mod_ctx_struct,
907 );
908 pub fn fmpz_mod_poly_inv_series_newton_f(
909 f: *mut fmpz,
910 Qinv: *mut fmpz_mod_poly_struct,
911 Q: *const fmpz_mod_poly_struct,
912 n: mp_limb_signed_t,
913 ctx: *const fmpz_mod_ctx_struct,
914 );
915 pub fn _fmpz_mod_poly_inv_series(
916 Qinv: *mut fmpz,
917 Q: *const fmpz,
918 n: mp_limb_signed_t,
919 cinv: *const fmpz,
920 p: *const fmpz,
921 );
922 pub fn fmpz_mod_poly_inv_series(
923 Qinv: *mut fmpz_mod_poly_struct,
924 Q: *const fmpz_mod_poly_struct,
925 n: mp_limb_signed_t,
926 ctx: *const fmpz_mod_ctx_struct,
927 );
928 pub fn fmpz_mod_poly_inv_series_f(
929 f: *mut fmpz,
930 Qinv: *mut fmpz_mod_poly_struct,
931 Q: *const fmpz_mod_poly_struct,
932 n: mp_limb_signed_t,
933 ctx: *const fmpz_mod_ctx_struct,
934 );
935 pub fn _fmpz_mod_poly_div_series(
936 Q: *mut fmpz,
937 A: *const fmpz,
938 Alen: mp_limb_signed_t,
939 B: *const fmpz,
940 Blen: mp_limb_signed_t,
941 p: *const fmpz,
942 n: mp_limb_signed_t,
943 );
944 pub fn fmpz_mod_poly_div_series(
945 Q: *mut fmpz_mod_poly_struct,
946 A: *const fmpz_mod_poly_struct,
947 B: *const fmpz_mod_poly_struct,
948 n: mp_limb_signed_t,
949 ctx: *const fmpz_mod_ctx_struct,
950 );
951 pub fn fmpz_mod_poly_make_monic(
952 res: *mut fmpz_mod_poly_struct,
953 poly: *const fmpz_mod_poly_struct,
954 ctx: *const fmpz_mod_ctx_struct,
955 );
956 pub fn fmpz_mod_poly_make_monic_f(
957 f: *mut fmpz,
958 res: *mut fmpz_mod_poly_struct,
959 poly: *const fmpz_mod_poly_struct,
960 ctx: *const fmpz_mod_ctx_struct,
961 );
962 pub fn _fmpz_mod_poly_gcd_euclidean(
963 G: *mut fmpz,
964 A: *const fmpz,
965 lenA: mp_limb_signed_t,
966 B: *const fmpz,
967 lenB: mp_limb_signed_t,
968 invB: *const fmpz,
969 p: *const fmpz,
970 ) -> mp_limb_signed_t;
971 pub fn fmpz_mod_poly_gcd_euclidean(
972 G: *mut fmpz_mod_poly_struct,
973 A: *const fmpz_mod_poly_struct,
974 B: *const fmpz_mod_poly_struct,
975 ctx: *const fmpz_mod_ctx_struct,
976 );
977 pub fn _fmpz_mod_poly_gcd_euclidean_f(
978 f: *mut fmpz,
979 G: *mut fmpz,
980 A: *const fmpz,
981 lenA: mp_limb_signed_t,
982 B: *const fmpz,
983 lenB: mp_limb_signed_t,
984 p: *const fmpz,
985 ) -> mp_limb_signed_t;
986 pub fn fmpz_mod_poly_gcd_euclidean_f(
987 f: *mut fmpz,
988 G: *mut fmpz_mod_poly_struct,
989 A: *const fmpz_mod_poly_struct,
990 B: *const fmpz_mod_poly_struct,
991 ctx: *const fmpz_mod_ctx_struct,
992 );
993 pub fn _fmpz_mod_poly_gcd_f(
994 f: *mut fmpz,
995 G: *mut fmpz,
996 A: *const fmpz,
997 lenA: mp_limb_signed_t,
998 B: *const fmpz,
999 lenB: mp_limb_signed_t,
1000 p: *const fmpz,
1001 ) -> mp_limb_signed_t;
1002
1003 pub fn fmpz_mod_poly_gcd_f(
1006 f: *mut fmpz,
1007 G: *mut fmpz_mod_poly_struct,
1008 A: *const fmpz_mod_poly_struct,
1009 B: *const fmpz_mod_poly_struct,
1010 ctx: *const fmpz_mod_ctx_struct,
1011 );
1012 pub fn _fmpz_mod_poly_hgcd_recursive(
1013 M: *mut *mut fmpz,
1014 lenM: *mut mp_limb_signed_t,
1015 A: *mut fmpz,
1016 lenA: *mut mp_limb_signed_t,
1017 B: *mut fmpz,
1018 lenB: *mut mp_limb_signed_t,
1019 a: *const fmpz,
1020 lena: mp_limb_signed_t,
1021 b: *const fmpz,
1022 lenb: mp_limb_signed_t,
1023 P: *const fmpz,
1024 mod_: *const fmpz,
1025 flag: c_int,
1026 res: *const fmpz_mod_poly_res_struct,
1027 ) -> mp_limb_signed_t;
1028 pub fn _fmpz_mod_poly_hgcd(
1029 M: *mut *mut fmpz,
1030 lenM: *mut mp_limb_signed_t,
1031 A: *mut fmpz,
1032 lenA: *mut mp_limb_signed_t,
1033 B: *mut fmpz,
1034 lenB: *mut mp_limb_signed_t,
1035 a: *const fmpz,
1036 lena: mp_limb_signed_t,
1037 b: *const fmpz,
1038 lenb: mp_limb_signed_t,
1039 mod_: *const fmpz,
1040 ) -> mp_limb_signed_t;
1041 pub fn _fmpz_mod_poly_gcd_hgcd(
1042 G: *mut fmpz,
1043 A: *const fmpz,
1044 lenA: mp_limb_signed_t,
1045 B: *const fmpz,
1046 lenB: mp_limb_signed_t,
1047 mod_: *const fmpz,
1048 ) -> mp_limb_signed_t;
1049 pub fn fmpz_mod_poly_gcd_hgcd(
1050 G: *mut fmpz_mod_poly_struct,
1051 A: *const fmpz_mod_poly_struct,
1052 B: *const fmpz_mod_poly_struct,
1053 ctx: *const fmpz_mod_ctx_struct,
1054 );
1055 pub fn _fmpz_mod_poly_gcd(
1056 G: *mut fmpz,
1057 A: *const fmpz,
1058 lenA: mp_limb_signed_t,
1059 B: *const fmpz,
1060 lenB: mp_limb_signed_t,
1061 invB: *const fmpz,
1062 p: *const fmpz,
1063 ) -> mp_limb_signed_t;
1064 pub fn fmpz_mod_poly_gcd(
1065 G: *mut fmpz_mod_poly_struct,
1066 A: *const fmpz_mod_poly_struct,
1067 B: *const fmpz_mod_poly_struct,
1068 ctx: *const fmpz_mod_ctx_struct,
1069 );
1070 pub fn _fmpz_mod_poly_xgcd_euclidean(
1071 G: *mut fmpz,
1072 S: *mut fmpz,
1073 T: *mut fmpz,
1074 A: *const fmpz,
1075 lenA: mp_limb_signed_t,
1076 B: *const fmpz,
1077 lenB: mp_limb_signed_t,
1078 invB: *const fmpz,
1079 p: *const fmpz,
1080 ) -> mp_limb_signed_t;
1081 pub fn _fmpz_mod_poly_xgcd_euclidean_f(
1082 f: *mut fmpz,
1083 G: *mut fmpz,
1084 S: *mut fmpz,
1085 T: *mut fmpz,
1086 A: *const fmpz,
1087 lenA: mp_limb_signed_t,
1088 B: *const fmpz,
1089 lenB: mp_limb_signed_t,
1090 invB: *const fmpz,
1091 p: *const fmpz,
1092 ) -> mp_limb_signed_t;
1093 pub fn fmpz_mod_poly_xgcd_euclidean(
1094 G: *mut fmpz_mod_poly_struct,
1095 S: *mut fmpz_mod_poly_struct,
1096 T: *mut fmpz_mod_poly_struct,
1097 A: *const fmpz_mod_poly_struct,
1098 B: *const fmpz_mod_poly_struct,
1099 ctx: *const fmpz_mod_ctx_struct,
1100 );
1101 pub fn fmpz_mod_poly_xgcd_euclidean_f(
1102 f: *mut fmpz,
1103 G: *mut fmpz_mod_poly_struct,
1104 S: *mut fmpz_mod_poly_struct,
1105 T: *mut fmpz_mod_poly_struct,
1106 A: *const fmpz_mod_poly_struct,
1107 B: *const fmpz_mod_poly_struct,
1108 ctx: *const fmpz_mod_ctx_struct,
1109 );
1110 pub fn _fmpz_mod_poly_xgcd_hgcd(
1111 G: *mut fmpz,
1112 S: *mut fmpz,
1113 T: *mut fmpz,
1114 A: *const fmpz,
1115 lenA: mp_limb_signed_t,
1116 B: *const fmpz,
1117 lenB: mp_limb_signed_t,
1118 mod_: *const fmpz,
1119 ) -> mp_limb_signed_t;
1120 pub fn fmpz_mod_poly_xgcd_hgcd(
1121 G: *mut fmpz_mod_poly_struct,
1122 S: *mut fmpz_mod_poly_struct,
1123 T: *mut fmpz_mod_poly_struct,
1124 A: *const fmpz_mod_poly_struct,
1125 B: *const fmpz_mod_poly_struct,
1126 ctx: *const fmpz_mod_ctx_struct,
1127 );
1128 pub fn _fmpz_mod_poly_xgcd(
1129 G: *mut fmpz,
1130 S: *mut fmpz,
1131 T: *mut fmpz,
1132 A: *const fmpz,
1133 lenA: mp_limb_signed_t,
1134 B: *const fmpz,
1135 lenB: mp_limb_signed_t,
1136 invB: *const fmpz,
1137 p: *const fmpz,
1138 ) -> mp_limb_signed_t;
1139 pub fn _fmpz_mod_poly_xgcd_f(
1140 f: *mut fmpz,
1141 G: *mut fmpz,
1142 S: *mut fmpz,
1143 T: *mut fmpz,
1144 A: *const fmpz,
1145 lenA: mp_limb_signed_t,
1146 B: *const fmpz,
1147 lenB: mp_limb_signed_t,
1148 invB: *const fmpz,
1149 p: *const fmpz,
1150 ) -> mp_limb_signed_t;
1151 pub fn fmpz_mod_poly_xgcd(
1152 G: *mut fmpz_mod_poly_struct,
1153 S: *mut fmpz_mod_poly_struct,
1154 T: *mut fmpz_mod_poly_struct,
1155 A: *const fmpz_mod_poly_struct,
1156 B: *const fmpz_mod_poly_struct,
1157 ctx: *const fmpz_mod_ctx_struct,
1158 );
1159 pub fn fmpz_mod_poly_xgcd_f(
1160 f: *mut fmpz,
1161 G: *mut fmpz_mod_poly_struct,
1162 S: *mut fmpz_mod_poly_struct,
1163 T: *mut fmpz_mod_poly_struct,
1164 A: *const fmpz_mod_poly_struct,
1165 B: *const fmpz_mod_poly_struct,
1166 ctx: *const fmpz_mod_ctx_struct,
1167 );
1168 pub fn _fmpz_mod_poly_gcdinv_euclidean_f(
1169 f: *mut fmpz,
1170 G: *mut fmpz,
1171 S: *mut fmpz,
1172 A: *const fmpz,
1173 lenA: mp_limb_signed_t,
1174 B: *const fmpz,
1175 lenB: mp_limb_signed_t,
1176 invA: *const fmpz,
1177 p: *const fmpz,
1178 ) -> mp_limb_signed_t;
1179 pub fn fmpz_mod_poly_gcdinv_euclidean_f(
1180 f: *mut fmpz,
1181 G: *mut fmpz_mod_poly_struct,
1182 S: *mut fmpz_mod_poly_struct,
1183 A: *const fmpz_mod_poly_struct,
1184 B: *const fmpz_mod_poly_struct,
1185 ctx: *const fmpz_mod_ctx_struct,
1186 );
1187 pub fn _fmpz_mod_poly_gcdinv_euclidean(
1188 G: *mut fmpz,
1189 S: *mut fmpz,
1190 A: *const fmpz,
1191 lenA: mp_limb_signed_t,
1192 B: *const fmpz,
1193 lenB: mp_limb_signed_t,
1194 invA: *const fmpz,
1195 p: *const fmpz,
1196 ) -> mp_limb_signed_t;
1197 pub fn fmpz_mod_poly_gcdinv_euclidean(
1198 G: *mut fmpz_mod_poly_struct,
1199 S: *mut fmpz_mod_poly_struct,
1200 A: *const fmpz_mod_poly_struct,
1201 B: *const fmpz_mod_poly_struct,
1202 ctx: *const fmpz_mod_ctx_struct,
1203 );
1204 pub fn _fmpz_mod_poly_gcdinv(
1205 G: *mut fmpz,
1206 S: *mut fmpz,
1207 A: *const fmpz,
1208 lenA: mp_limb_signed_t,
1209 B: *const fmpz,
1210 lenB: mp_limb_signed_t,
1211 p: *const fmpz,
1212 ) -> mp_limb_signed_t;
1213 pub fn fmpz_mod_poly_gcdinv(
1214 G: *mut fmpz_mod_poly_struct,
1215 S: *mut fmpz_mod_poly_struct,
1216 A: *const fmpz_mod_poly_struct,
1217 B: *const fmpz_mod_poly_struct,
1218 ctx: *const fmpz_mod_ctx_struct,
1219 );
1220 pub fn _fmpz_mod_poly_gcdinv_f(
1221 f: *mut fmpz,
1222 G: *mut fmpz,
1223 S: *mut fmpz,
1224 A: *const fmpz,
1225 lenA: mp_limb_signed_t,
1226 B: *const fmpz,
1227 lenB: mp_limb_signed_t,
1228 p: *const fmpz,
1229 ) -> mp_limb_signed_t;
1230 pub fn fmpz_mod_poly_gcdinv_f(
1231 f: *mut fmpz,
1232 G: *mut fmpz_mod_poly_struct,
1233 S: *mut fmpz_mod_poly_struct,
1234 A: *const fmpz_mod_poly_struct,
1235 B: *const fmpz_mod_poly_struct,
1236 ctx: *const fmpz_mod_ctx_struct,
1237 );
1238 pub fn _fmpz_mod_poly_invmod(
1239 A: *mut fmpz,
1240 B: *const fmpz,
1241 lenB: mp_limb_signed_t,
1242 P: *const fmpz,
1243 lenP: mp_limb_signed_t,
1244 p: *const fmpz,
1245 ) -> c_int;
1246 pub fn _fmpz_mod_poly_invmod_f(
1247 f: *mut fmpz,
1248 A: *mut fmpz,
1249 B: *const fmpz,
1250 lenB: mp_limb_signed_t,
1251 P: *const fmpz,
1252 lenP: mp_limb_signed_t,
1253 p: *const fmpz,
1254 ) -> c_int;
1255 pub fn fmpz_mod_poly_invmod(
1256 A: *mut fmpz_mod_poly_struct,
1257 B: *const fmpz_mod_poly_struct,
1258 P: *const fmpz_mod_poly_struct,
1259 ctx: *const fmpz_mod_ctx_struct,
1260 ) -> c_int;
1261 pub fn fmpz_mod_poly_invmod_f(
1262 f: *mut fmpz,
1263 A: *mut fmpz_mod_poly_struct,
1264 B: *const fmpz_mod_poly_struct,
1265 P: *const fmpz_mod_poly_struct,
1266 ctx: *const fmpz_mod_ctx_struct,
1267 ) -> c_int;
1268 pub fn _fmpz_mod_poly_minpoly_bm(
1269 poly: *mut fmpz,
1270 seq: *const fmpz,
1271 len: mp_limb_signed_t,
1272 p: *const fmpz,
1273 ) -> mp_limb_signed_t;
1274 pub fn fmpz_mod_poly_minpoly_bm(
1275 poly: *mut fmpz_mod_poly_struct,
1276 seq: *const fmpz,
1277 len: mp_limb_signed_t,
1278 ctx: *const fmpz_mod_ctx_struct,
1279 );
1280 pub fn _fmpz_mod_poly_minpoly_hgcd(
1281 poly: *mut fmpz,
1282 seq: *const fmpz,
1283 len: mp_limb_signed_t,
1284 p: *const fmpz,
1285 ) -> mp_limb_signed_t;
1286 pub fn fmpz_mod_poly_minpoly_hgcd(
1287 poly: *mut fmpz_mod_poly_struct,
1288 seq: *const fmpz,
1289 len: mp_limb_signed_t,
1290 ctx: *const fmpz_mod_ctx_struct,
1291 );
1292 pub fn _fmpz_mod_poly_minpoly(
1293 poly: *mut fmpz,
1294 seq: *const fmpz,
1295 len: mp_limb_signed_t,
1296 p: *const fmpz,
1297 ) -> mp_limb_signed_t;
1298 pub fn fmpz_mod_poly_minpoly(
1299 poly: *mut fmpz_mod_poly_struct,
1300 seq: *const fmpz,
1301 len: mp_limb_signed_t,
1302 ctx: *const fmpz_mod_ctx_struct,
1303 );
1304 pub fn _fmpz_mod_poly_resultant_euclidean(
1305 res: *mut fmpz,
1306 poly1: *const fmpz,
1307 len1: mp_limb_signed_t,
1308 poly2: *const fmpz,
1309 len2: mp_limb_signed_t,
1310 mod_: *const fmpz,
1311 );
1312 pub fn fmpz_mod_poly_resultant_euclidean(
1313 r: *mut fmpz,
1314 f: *const fmpz_mod_poly_struct,
1315 g: *const fmpz_mod_poly_struct,
1316 ctx: *const fmpz_mod_ctx_struct,
1317 );
1318 pub fn _fmpz_mod_poly_resultant_hgcd(
1319 res: *mut fmpz,
1320 A: *const fmpz,
1321 lenA: mp_limb_signed_t,
1322 B: *const fmpz,
1323 lenB: mp_limb_signed_t,
1324 mod_: *const fmpz,
1325 );
1326 pub fn fmpz_mod_poly_resultant_hgcd(
1327 res: *mut fmpz,
1328 A: *const fmpz_mod_poly_struct,
1329 B: *const fmpz_mod_poly_struct,
1330 ctx: *const fmpz_mod_ctx_struct,
1331 );
1332 pub fn _fmpz_mod_poly_resultant(
1333 res: *mut fmpz,
1334 poly1: *const fmpz,
1335 len1: mp_limb_signed_t,
1336 poly2: *const fmpz,
1337 len2: mp_limb_signed_t,
1338 mod_: *const fmpz,
1339 );
1340 pub fn fmpz_mod_poly_resultant(
1341 res: *mut fmpz,
1342 f: *const fmpz_mod_poly_struct,
1343 g: *const fmpz_mod_poly_struct,
1344 ctx: *const fmpz_mod_ctx_struct,
1345 );
1346 pub fn _fmpz_mod_poly_discriminant(
1347 d: *mut fmpz,
1348 poly: *const fmpz,
1349 len: mp_limb_signed_t,
1350 mod_: *const fmpz,
1351 );
1352 pub fn fmpz_mod_poly_discriminant(
1353 d: *mut fmpz,
1354 f: *const fmpz_mod_poly_struct,
1355 ctx: *const fmpz_mod_ctx_struct,
1356 );
1357 pub fn _fmpz_mod_poly_derivative(
1358 res: *mut fmpz,
1359 poly: *const fmpz,
1360 len: mp_limb_signed_t,
1361 p: *const fmpz,
1362 );
1363 pub fn fmpz_mod_poly_derivative(
1364 res: *mut fmpz_mod_poly_struct,
1365 poly: *const fmpz_mod_poly_struct,
1366 ctx: *const fmpz_mod_ctx_struct,
1367 );
1368 pub fn _fmpz_mod_poly_evaluate_fmpz(
1369 res: *mut fmpz,
1370 poly: *const fmpz,
1371 len: mp_limb_signed_t,
1372 a: *const fmpz,
1373 p: *const fmpz,
1374 );
1375 pub fn fmpz_mod_poly_evaluate_fmpz(
1376 res: *mut fmpz,
1377 poly: *const fmpz_mod_poly_struct,
1378 a: *const fmpz,
1379 ctx: *const fmpz_mod_ctx_struct,
1380 );
1381 pub fn _fmpz_mod_poly_tree_alloc(len: mp_limb_signed_t) -> *mut *mut fmpz_poly_struct;
1382 pub fn _fmpz_mod_poly_tree_free(tree: *mut *mut fmpz_poly_struct, len: mp_limb_signed_t);
1383 pub fn _fmpz_mod_poly_tree_build(
1384 tree: *mut *mut fmpz_poly_struct,
1385 roots: *const fmpz,
1386 len: mp_limb_signed_t,
1387 mod_: *mut fmpz,
1388 );
1389 pub fn _fmpz_mod_poly_evaluate_fmpz_vec_iter(
1390 ys: *mut fmpz,
1391 coeffs: *const fmpz,
1392 len: mp_limb_signed_t,
1393 xs: *const fmpz,
1394 n: mp_limb_signed_t,
1395 mod_: *const fmpz,
1396 );
1397 pub fn fmpz_mod_poly_evaluate_fmpz_vec_iter(
1398 ys: *mut fmpz,
1399 poly: *const fmpz_mod_poly_struct,
1400 xs: *const fmpz,
1401 n: mp_limb_signed_t,
1402 ctx: *const fmpz_mod_ctx_struct,
1403 );
1404 pub fn _fmpz_mod_poly_evaluate_fmpz_vec_fast_precomp(
1405 vs: *mut fmpz,
1406 poly: *const fmpz,
1407 plen: mp_limb_signed_t,
1408 tree: *const *const fmpz_poly_struct,
1409 len: mp_limb_signed_t,
1410 mod_: *const fmpz,
1411 );
1412 pub fn _fmpz_mod_poly_evaluate_fmpz_vec_fast(
1413 ys: *mut fmpz,
1414 poly: *const fmpz,
1415 plen: mp_limb_signed_t,
1416 xs: *const fmpz,
1417 n: mp_limb_signed_t,
1418 mod_: *const fmpz,
1419 );
1420 pub fn fmpz_mod_poly_evaluate_fmpz_vec_fast(
1421 ys: *mut fmpz,
1422 poly: *const fmpz_mod_poly_struct,
1423 xs: *const fmpz,
1424 n: mp_limb_signed_t,
1425 ctx: *const fmpz_mod_ctx_struct,
1426 );
1427 pub fn _fmpz_mod_poly_evaluate_fmpz_vec(
1428 ys: *mut fmpz,
1429 coeffs: *const fmpz,
1430 len: mp_limb_signed_t,
1431 xs: *const fmpz,
1432 n: mp_limb_signed_t,
1433 mod_: *const fmpz,
1434 );
1435 pub fn fmpz_mod_poly_evaluate_fmpz_vec(
1436 ys: *mut fmpz,
1437 poly: *const fmpz_mod_poly_struct,
1438 xs: *const fmpz,
1439 n: mp_limb_signed_t,
1440 ctx: *const fmpz_mod_ctx_struct,
1441 );
1442 pub fn _fmpz_mod_poly_compose_horner(
1443 res: *mut fmpz,
1444 poly1: *const fmpz,
1445 len1: mp_limb_signed_t,
1446 poly2: *const fmpz,
1447 len2: mp_limb_signed_t,
1448 p: *const fmpz,
1449 );
1450 pub fn fmpz_mod_poly_compose_horner(
1451 res: *mut fmpz_mod_poly_struct,
1452 poly1: *const fmpz_mod_poly_struct,
1453 poly2: *const fmpz_mod_poly_struct,
1454 ctx: *const fmpz_mod_ctx_struct,
1455 );
1456 pub fn _fmpz_mod_poly_compose_divconquer(
1457 res: *mut fmpz,
1458 poly1: *const fmpz,
1459 len1: mp_limb_signed_t,
1460 poly2: *const fmpz,
1461 len2: mp_limb_signed_t,
1462 p: *const fmpz,
1463 );
1464 pub fn fmpz_mod_poly_compose_divconquer(
1465 res: *mut fmpz_mod_poly_struct,
1466 poly1: *const fmpz_mod_poly_struct,
1467 poly2: *const fmpz_mod_poly_struct,
1468 ctx: *const fmpz_mod_ctx_struct,
1469 );
1470 pub fn _fmpz_mod_poly_compose(
1471 res: *mut fmpz,
1472 poly1: *const fmpz,
1473 len1: mp_limb_signed_t,
1474 poly2: *const fmpz,
1475 len2: mp_limb_signed_t,
1476 p: *const fmpz,
1477 );
1478 pub fn fmpz_mod_poly_compose(
1479 res: *mut fmpz_mod_poly_struct,
1480 poly1: *const fmpz_mod_poly_struct,
1481 poly2: *const fmpz_mod_poly_struct,
1482 ctx: *const fmpz_mod_ctx_struct,
1483 );
1484 pub fn _fmpz_mod_poly_compose_mod(
1485 res: *mut fmpz,
1486 f: *const fmpz,
1487 lenf: mp_limb_signed_t,
1488 g: *const fmpz,
1489 h: *const fmpz,
1490 lenh: mp_limb_signed_t,
1491 p: *const fmpz,
1492 );
1493 pub fn fmpz_mod_poly_compose_mod(
1494 res: *mut fmpz_mod_poly_struct,
1495 poly1: *const fmpz_mod_poly_struct,
1496 poly2: *const fmpz_mod_poly_struct,
1497 poly3: *const fmpz_mod_poly_struct,
1498 ctx: *const fmpz_mod_ctx_struct,
1499 );
1500 pub fn _fmpz_mod_poly_compose_mod_brent_kung(
1501 res: *mut fmpz,
1502 poly1: *const fmpz,
1503 len1: mp_limb_signed_t,
1504 poly2: *const fmpz,
1505 poly3: *const fmpz,
1506 len3: mp_limb_signed_t,
1507 p: *const fmpz,
1508 );
1509 pub fn fmpz_mod_poly_compose_mod_brent_kung(
1510 res: *mut fmpz_mod_poly_struct,
1511 poly1: *const fmpz_mod_poly_struct,
1512 poly2: *const fmpz_mod_poly_struct,
1513 poly3: *const fmpz_mod_poly_struct,
1514 ctx: *const fmpz_mod_ctx_struct,
1515 );
1516 pub fn _fmpz_mod_poly_reduce_matrix_mod_poly(
1517 A: *mut fmpz_mat_struct,
1518 B: *const fmpz_mat_struct,
1519 f: *const fmpz_mod_poly_struct,
1520 ctx: *const fmpz_mod_ctx_struct,
1521 );
1522 pub fn _fmpz_mod_poly_precompute_matrix(
1523 A: *mut fmpz_mat_struct,
1524 poly1: *const fmpz,
1525 poly2: *const fmpz,
1526 len2: mp_limb_signed_t,
1527 poly2inv: *const fmpz,
1528 len2inv: mp_limb_signed_t,
1529 p: *const fmpz,
1530 );
1531 pub fn _fmpz_mod_poly_precompute_matrix_worker(arg_ptr: *mut c_void);
1532 pub fn fmpz_mod_poly_precompute_matrix(
1533 A: *mut fmpz_mat_struct,
1534 poly1: *const fmpz_mod_poly_struct,
1535 poly2: *const fmpz_mod_poly_struct,
1536 poly2inv: *const fmpz_mod_poly_struct,
1537 ctx: *const fmpz_mod_ctx_struct,
1538 );
1539 pub fn _fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv(
1540 res: *mut fmpz,
1541 poly1: *const fmpz,
1542 len1: mp_limb_signed_t,
1543 A: *const fmpz_mat_struct,
1544 poly3: *const fmpz,
1545 len3: mp_limb_signed_t,
1546 poly3inv: *const fmpz,
1547 len3inv: mp_limb_signed_t,
1548 p: *const fmpz,
1549 );
1550 pub fn _fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv_worker(arg_ptr: *mut c_void);
1551 pub fn fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv(
1552 res: *mut fmpz_mod_poly_struct,
1553 poly1: *const fmpz_mod_poly_struct,
1554 A: *const fmpz_mat_struct,
1555 poly3: *const fmpz_mod_poly_struct,
1556 poly3inv: *const fmpz_mod_poly_struct,
1557 ctx: *const fmpz_mod_ctx_struct,
1558 );
1559 pub fn _fmpz_mod_poly_compose_mod_brent_kung_preinv(
1560 res: *mut fmpz,
1561 poly1: *const fmpz,
1562 len1: mp_limb_signed_t,
1563 poly2: *const fmpz,
1564 poly3: *const fmpz,
1565 len3: mp_limb_signed_t,
1566 poly3inv: *const fmpz,
1567 len3inv: mp_limb_signed_t,
1568 p: *const fmpz,
1569 );
1570 pub fn fmpz_mod_poly_compose_mod_brent_kung_preinv(
1571 res: *mut fmpz_mod_poly_struct,
1572 poly1: *const fmpz_mod_poly_struct,
1573 poly2: *const fmpz_mod_poly_struct,
1574 poly3: *const fmpz_mod_poly_struct,
1575 poly3inv: *const fmpz_mod_poly_struct,
1576 ctx: *const fmpz_mod_ctx_struct,
1577 );
1578 pub fn _fmpz_mod_poly_compose_mod_horner(
1579 res: *mut fmpz,
1580 f: *const fmpz,
1581 lenf: mp_limb_signed_t,
1582 g: *const fmpz,
1583 h: *const fmpz,
1584 lenh: mp_limb_signed_t,
1585 p: *const fmpz,
1586 );
1587 pub fn fmpz_mod_poly_compose_mod_horner(
1588 res: *mut fmpz_mod_poly_struct,
1589 poly1: *const fmpz_mod_poly_struct,
1590 poly2: *const fmpz_mod_poly_struct,
1591 poly3: *const fmpz_mod_poly_struct,
1592 ctx: *const fmpz_mod_ctx_struct,
1593 );
1594 pub fn _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(
1595 res: *mut fmpz_mod_poly_struct,
1596 polys: *const fmpz_mod_poly_struct,
1597 len1: mp_limb_signed_t,
1598 l: mp_limb_signed_t,
1599 g: *const fmpz,
1600 glen: mp_limb_signed_t,
1601 poly: *const fmpz,
1602 len: mp_limb_signed_t,
1603 polyinv: *const fmpz,
1604 leninv: mp_limb_signed_t,
1605 p: *const fmpz,
1606 );
1607 pub fn fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(
1608 res: *mut fmpz_mod_poly_struct,
1609 polys: *const fmpz_mod_poly_struct,
1610 len1: mp_limb_signed_t,
1611 n: mp_limb_signed_t,
1612 g: *const fmpz_mod_poly_struct,
1613 poly: *const fmpz_mod_poly_struct,
1614 polyinv: *const fmpz_mod_poly_struct,
1615 ctx: *const fmpz_mod_ctx_struct,
1616 );
1617 pub fn _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
1618 res: *mut fmpz_mod_poly_struct,
1619 polys: *const fmpz_mod_poly_struct,
1620 lenpolys: mp_limb_signed_t,
1621 l: mp_limb_signed_t,
1622 g: *const fmpz,
1623 glen: mp_limb_signed_t,
1624 poly: *const fmpz,
1625 len: mp_limb_signed_t,
1626 polyinv: *const fmpz,
1627 leninv: mp_limb_signed_t,
1628 p: *const fmpz,
1629 threads: *const thread_pool_handle,
1630 num_threads: mp_limb_signed_t,
1631 );
1632 pub fn fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
1633 res: *mut fmpz_mod_poly_struct,
1634 polys: *const fmpz_mod_poly_struct,
1635 len1: mp_limb_signed_t,
1636 n: mp_limb_signed_t,
1637 g: *const fmpz_mod_poly_struct,
1638 poly: *const fmpz_mod_poly_struct,
1639 polyinv: *const fmpz_mod_poly_struct,
1640 ctx: *const fmpz_mod_ctx_struct,
1641 threads: *const thread_pool_handle,
1642 num_threads: mp_limb_signed_t,
1643 );
1644 pub fn fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded(
1645 res: *mut fmpz_mod_poly_struct,
1646 polys: *const fmpz_mod_poly_struct,
1647 len1: mp_limb_signed_t,
1648 n: mp_limb_signed_t,
1649 g: *const fmpz_mod_poly_struct,
1650 poly: *const fmpz_mod_poly_struct,
1651 polyinv: *const fmpz_mod_poly_struct,
1652 ctx: *const fmpz_mod_ctx_struct,
1653 );
1654 pub fn _fmpz_mod_poly_radix_init(
1655 Rpow: *mut *mut fmpz,
1656 Rinv: *const *const fmpz,
1657 R: *const fmpz,
1658 lenR: mp_limb_signed_t,
1659 k: mp_limb_signed_t,
1660 invL: *const fmpz,
1661 p: *const fmpz,
1662 );
1663 pub fn fmpz_mod_poly_radix_init(
1664 D: *mut fmpz_mod_poly_radix_struct,
1665 R: *mut fmpz_mod_poly_struct,
1666 degF: mp_limb_signed_t,
1667 ctx: *const fmpz_mod_ctx_struct,
1668 );
1669 pub fn fmpz_mod_poly_radix_clear(D: *mut fmpz_mod_poly_radix_struct);
1670 pub fn _fmpz_mod_poly_radix(
1671 B: *mut *mut fmpz,
1672 F: *const fmpz,
1673 Rpow: *mut *mut fmpz,
1674 Rinv: *mut *mut fmpz,
1675 degR: mp_limb_signed_t,
1676 k: mp_limb_signed_t,
1677 i: mp_limb_signed_t,
1678 W: *const fmpz,
1679 p: *const fmpz,
1680 );
1681 pub fn fmpz_mod_poly_radix(
1682 B: *mut *mut fmpz_mod_poly_struct,
1683 F: *const fmpz_mod_poly_struct,
1684 D: *const fmpz_mod_poly_radix_struct,
1685 ctx: *const fmpz_mod_ctx_struct,
1686 );
1687 pub fn _fmpz_mod_poly_fprint(
1688 file: *mut FILE,
1689 poly: *const fmpz,
1690 len: mp_limb_signed_t,
1691 p: *const fmpz,
1692 ) -> c_int;
1693 pub fn fmpz_mod_poly_fprint(
1694 file: *mut FILE,
1695 poly: *const fmpz_mod_poly_struct,
1696 ctx: *const fmpz_mod_ctx_struct,
1697 ) -> c_int;
1698 pub fn fmpz_mod_poly_fread(
1699 file: *mut FILE,
1700 poly: *const fmpz_mod_poly_struct,
1701 ctx: *const fmpz_mod_ctx_struct,
1702 ) -> c_int;
1703 pub fn fmpz_mod_poly_fprint_pretty(
1704 file: *mut FILE,
1705 poly: *const fmpz_mod_poly_struct,
1706 x: *const c_char,
1707 ctx: *const fmpz_mod_ctx_struct,
1708 ) -> c_int;
1709 pub fn _fmpz_mod_poly_print(poly: *const fmpz, len: mp_limb_signed_t, p: *const fmpz) -> c_int;
1710 pub fn fmpz_mod_poly_print(
1711 poly: *mut fmpz_mod_poly_struct,
1712 ctx: *const fmpz_mod_ctx_struct,
1713 ) -> c_int;
1714 pub fn fmpz_mod_poly_print_pretty(
1715 poly: *const fmpz_mod_poly_struct,
1716 x: *const c_char,
1717 ctx: *const fmpz_mod_ctx_struct,
1718 ) -> c_int;
1719 pub fn _fmpz_mod_poly_product_roots_fmpz_vec(
1720 poly: *mut fmpz,
1721 xs: *const fmpz,
1722 n: mp_limb_signed_t,
1723 mod_: *const fmpz,
1724 );
1725 pub fn fmpz_mod_poly_product_roots_fmpz_vec(
1726 poly: *mut fmpz_poly_struct,
1727 xs: *const fmpz,
1728 n: mp_limb_signed_t,
1729 mod_: *const fmpz,
1730 );
1731 pub fn fmpz_mod_poly_find_distinct_nonzero_roots(
1732 roots: *const fmpz,
1733 P: *const fmpz_mod_poly_struct,
1734 ctx: *const fmpz_mod_ctx_struct,
1735 ) -> c_int;
1736 pub fn _fmpz_mod_poly_split_rabin(
1737 a: *mut fmpz_mod_poly_struct,
1738 b: *const fmpz_mod_poly_struct,
1739 f: *const fmpz_mod_poly_struct,
1740 halfp: *const fmpz,
1741 t: *const fmpz_mod_poly_struct,
1742 t2: *const fmpz_mod_poly_struct,
1743 randstate: *const flint_rand_s,
1744 ctx: *const fmpz_mod_ctx_struct,
1745 );
1746 pub fn fmpz_mod_berlekamp_massey_init(
1747 B: *mut fmpz_mod_berlekamp_massey_struct,
1748 ctx: *const fmpz_mod_ctx_struct,
1749 );
1750 pub fn fmpz_mod_berlekamp_massey_start_over(
1751 B: *const fmpz_mod_berlekamp_massey_struct,
1752 ctx: *const fmpz_mod_ctx_struct,
1753 );
1754 pub fn fmpz_mod_berlekamp_massey_clear(
1755 B: *const fmpz_mod_berlekamp_massey_struct,
1756 ctx: *const fmpz_mod_ctx_struct,
1757 );
1758 pub fn fmpz_mod_berlekamp_massey_print(
1759 B: *mut fmpz_mod_berlekamp_massey_struct,
1760 ctx: *const fmpz_mod_ctx_struct,
1761 );
1762 pub fn fmpz_mod_berlekamp_massey_add_points(
1763 B: *mut fmpz_mod_berlekamp_massey_struct,
1764 a: *const fmpz,
1765 count: mp_limb_signed_t,
1766 ctx: *const fmpz_mod_ctx_struct,
1767 );
1768 pub fn fmpz_mod_berlekamp_massey_add_zeros(
1769 B: *mut fmpz_mod_berlekamp_massey_struct,
1770 count: mp_limb_signed_t,
1771 ctx: *const fmpz_mod_ctx_struct,
1772 );
1773 pub fn fmpz_mod_berlekamp_massey_add_point(
1774 B: *mut fmpz_mod_berlekamp_massey_struct,
1775 a: *const fmpz,
1776 ctx: *const fmpz_mod_ctx_struct,
1777 );
1778 pub fn fmpz_mod_berlekamp_massey_add_point_ui(
1779 B: *mut fmpz_mod_berlekamp_massey_struct,
1780 a: mp_limb_t,
1781 ctx: *const fmpz_mod_ctx_struct,
1782 );
1783 pub fn fmpz_mod_berlekamp_massey_reduce(
1784 B: *mut fmpz_mod_berlekamp_massey_struct,
1785 ctx: *const fmpz_mod_ctx_struct,
1786 ) -> c_int;
1787 pub fn fmpz_mod_berlekamp_massey_points(
1788 B: *mut fmpz_mod_berlekamp_massey_struct,
1789 ) -> *const fmpz;
1790 pub fn fmpz_mod_berlekamp_massey_point_count(
1791 B: *mut fmpz_mod_berlekamp_massey_struct,
1792 ) -> mp_limb_signed_t;
1793 pub fn fmpz_mod_berlekamp_massey_V_poly(
1794 B: *mut fmpz_mod_berlekamp_massey_struct,
1795 ) -> *const fmpz_mod_poly_struct;
1796 pub fn fmpz_mod_berlekamp_massey_R_poly(
1797 B: *mut fmpz_mod_berlekamp_massey_struct,
1798 ) -> *const fmpz_mod_poly_struct;
1799 pub fn fmpz_mod_poly_add_si(
1800 res: *mut fmpz_mod_poly_struct,
1801 poly: *const fmpz_mod_poly_struct,
1802 c: mp_limb_signed_t,
1803 ctx: *const fmpz_mod_ctx_struct,
1804 );
1805 pub fn fmpz_mod_poly_sub_si(
1806 res: *mut fmpz_mod_poly_struct,
1807 poly: *const fmpz_mod_poly_struct,
1808 c: mp_limb_signed_t,
1809 ctx: *const fmpz_mod_ctx_struct,
1810 );
1811 pub fn fmpz_mod_poly_si_sub(
1812 res: *mut fmpz_mod_poly_struct,
1813 c: mp_limb_signed_t,
1814 poly: *const fmpz_mod_poly_struct,
1815 ctx: *const fmpz_mod_ctx_struct,
1816 );
1817 pub fn fmpz_mod_poly_add_fmpz(
1818 res: *mut fmpz_mod_poly_struct,
1819 poly: *const fmpz_mod_poly_struct,
1820 c: *const fmpz,
1821 ctx: *const fmpz_mod_ctx_struct,
1822 );
1823 pub fn fmpz_mod_poly_sub_fmpz(
1824 res: *mut fmpz_mod_poly_struct,
1825 poly: *const fmpz_mod_poly_struct,
1826 c: *const fmpz,
1827 ctx: *const fmpz_mod_ctx_struct,
1828 );
1829 pub fn fmpz_mod_poly_fmpz_sub(
1830 res: *mut fmpz_mod_poly_struct,
1831 c: *const fmpz,
1832 poly: *const fmpz_mod_poly_struct,
1833 ctx: *const fmpz_mod_ctx_struct,
1834 );
1835}