1#![allow(non_camel_case_types)]
2
3use crate::deps::*;
6use crate::flint::*;
7use crate::fmpz::fmpz;
8use crate::fmpz_mod_poly::fmpz_mod_poly_struct;
9use crate::fmpz_poly::fmpz_poly_struct;
10use crate::fq::{fq_ctx_struct, fq_struct};
11use crate::fq_mat::fq_mat_struct;
12use crate::nmod_poly::nmod_poly_struct;
13use libc::{c_char, c_int, FILE};
14
15#[repr(C)]
16#[derive(Debug, Copy, Clone)]
17pub struct fq_poly_struct {
18 pub coeffs: *mut fq_struct,
19 pub alloc: mp_limb_signed_t,
20 pub length: mp_limb_signed_t,
21}
22
23pub type fq_poly_t = [fq_poly_struct; 1usize];
24
25extern "C" {
26 pub fn fq_poly_init(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
27 pub fn fq_poly_init2(
28 poly: *mut fq_poly_struct,
29 alloc: mp_limb_signed_t,
30 ctx: *mut fq_ctx_struct,
31 );
32 pub fn fq_poly_realloc(
33 poly: *mut fq_poly_struct,
34 alloc: mp_limb_signed_t,
35 ctx: *mut fq_ctx_struct,
36 );
37 pub fn fq_poly_truncate(
38 poly: *mut fq_poly_struct,
39 len: mp_limb_signed_t,
40 ctx: *mut fq_ctx_struct,
41 );
42 pub fn fq_poly_set_trunc(
43 poly1: *mut fq_poly_struct,
44 poly2: *mut fq_poly_struct,
45 len: mp_limb_signed_t,
46 ctx: *mut fq_ctx_struct,
47 );
48 pub fn fq_poly_fit_length(
49 poly: *mut fq_poly_struct,
50 len: mp_limb_signed_t,
51 ctx: *mut fq_ctx_struct,
52 );
53 pub fn fq_poly_clear(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
54 pub fn _fq_poly_normalise(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
55 pub fn _fq_poly_normalise2(
56 poly: *const fq_struct,
57 length: *mut mp_limb_signed_t,
58 ctx: *mut fq_ctx_struct,
59 );
60 pub fn _fq_poly_set_length(
61 poly: *mut fq_poly_struct,
62 len: mp_limb_signed_t,
63 ctx: *mut fq_ctx_struct,
64 );
65 pub fn fq_poly_length(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> mp_limb_signed_t;
66 pub fn fq_poly_degree(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> mp_limb_signed_t;
67 pub fn fq_poly_lead(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> *mut fq_struct;
68 pub fn fq_poly_randtest(
69 f: *mut fq_poly_struct,
70 state: *mut flint_rand_s,
71 len: mp_limb_signed_t,
72 ctx: *mut fq_ctx_struct,
73 );
74 pub fn fq_poly_randtest_not_zero(
75 f: *mut fq_poly_struct,
76 state: *mut flint_rand_s,
77 len: mp_limb_signed_t,
78 ctx: *mut fq_ctx_struct,
79 );
80 pub fn fq_poly_randtest_monic(
81 f: *mut fq_poly_struct,
82 state: *mut flint_rand_s,
83 len: mp_limb_signed_t,
84 ctx: *mut fq_ctx_struct,
85 );
86 pub fn fq_poly_randtest_irreducible(
87 f: *mut fq_poly_struct,
88 state: *mut flint_rand_s,
89 len: mp_limb_signed_t,
90 ctx: *mut fq_ctx_struct,
91 );
92 pub fn _fq_poly_set(
93 rop: *mut fq_struct,
94 op: *const fq_struct,
95 len: mp_limb_signed_t,
96 ctx: *mut fq_ctx_struct,
97 );
98 pub fn fq_poly_set(rop: *mut fq_poly_struct, op: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
99 pub fn fq_poly_set_fq(
100 poly: *mut fq_poly_struct,
101 c: *mut fmpz_poly_struct,
102 ctx: *mut fq_ctx_struct,
103 );
104 pub fn fq_poly_set_fmpz_mod_poly(
105 rop: *mut fq_poly_struct,
106 op: *mut fmpz_mod_poly_struct,
107 ctx: *mut fq_ctx_struct,
108 );
109 pub fn fq_poly_set_nmod_poly(
110 rop: *mut fq_poly_struct,
111 op: *mut nmod_poly_struct,
112 ctx: *mut fq_ctx_struct,
113 );
114 pub fn fq_poly_swap(
115 op1: *mut fq_poly_struct,
116 op2: *mut fq_poly_struct,
117 ctx: *mut fq_ctx_struct,
118 );
119 pub fn _fq_poly_zero(rop: *mut fq_struct, len: mp_limb_signed_t, ctx: *mut fq_ctx_struct);
120 pub fn fq_poly_zero(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
121 pub fn fq_poly_one(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
122 pub fn fq_poly_gen(f: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
123 pub fn _fq_poly_make_monic(
124 rop: *mut fq_struct,
125 op: *const fq_struct,
126 length: mp_limb_signed_t,
127 ctx: *mut fq_ctx_struct,
128 );
129 pub fn fq_poly_make_monic(
130 rop: *mut fq_poly_struct,
131 op: *mut fq_poly_struct,
132 ctx: *mut fq_ctx_struct,
133 );
134 pub fn _fq_poly_reverse(
135 res: *mut fq_struct,
136 poly: *const fq_struct,
137 len: mp_limb_signed_t,
138 n: mp_limb_signed_t,
139 ctx: *mut fq_ctx_struct,
140 );
141 pub fn fq_poly_reverse(
142 res: *mut fq_poly_struct,
143 poly: *mut fq_poly_struct,
144 n: mp_limb_signed_t,
145 ctx: *mut fq_ctx_struct,
146 );
147 pub fn fq_poly_deflation(input: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> mp_limb_t;
148 pub fn fq_poly_deflate(
149 result: *mut fq_poly_struct,
150 input: *mut fq_poly_struct,
151 deflation: mp_limb_t,
152 ctx: *mut fq_ctx_struct,
153 );
154 pub fn fq_poly_inflate(
155 result: *mut fq_poly_struct,
156 input: *mut fq_poly_struct,
157 inflation: mp_limb_t,
158 ctx: *mut fq_ctx_struct,
159 );
160 pub fn fq_poly_get_coeff(
161 x: *mut fmpz_poly_struct,
162 poly: *mut fq_poly_struct,
163 n: mp_limb_signed_t,
164 ctx: *mut fq_ctx_struct,
165 );
166 pub fn fq_poly_set_coeff(
167 poly: *mut fq_poly_struct,
168 n: mp_limb_signed_t,
169 x: *mut fmpz_poly_struct,
170 ctx: *mut fq_ctx_struct,
171 );
172 pub fn fq_poly_set_coeff_fmpz(
173 poly: *mut fq_poly_struct,
174 n: mp_limb_signed_t,
175 x: *mut fmpz,
176 ctx: *mut fq_ctx_struct,
177 );
178 pub fn fq_poly_is_gen(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> c_int;
179 pub fn fq_poly_equal(
180 poly1: *mut fq_poly_struct,
181 poly2: *mut fq_poly_struct,
182 ctx: *mut fq_ctx_struct,
183 ) -> c_int;
184 pub fn fq_poly_equal_trunc(
185 poly1: *mut fq_poly_struct,
186 poly2: *mut fq_poly_struct,
187 n: mp_limb_signed_t,
188 ctx: *mut fq_ctx_struct,
189 ) -> c_int;
190 pub fn fq_poly_is_zero(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> c_int;
191 pub fn fq_poly_is_one(op: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> c_int;
192 pub fn fq_poly_is_unit(op: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> c_int;
193 pub fn fq_poly_equal_fq(
194 poly: *mut fq_poly_struct,
195 c: *mut fmpz_poly_struct,
196 ctx: *mut fq_ctx_struct,
197 ) -> c_int;
198 pub fn _fq_poly_add(
199 res: *mut fq_struct,
200 poly1: *const fq_struct,
201 len1: mp_limb_signed_t,
202 poly2: *const fq_struct,
203 len2: mp_limb_signed_t,
204 ctx: *mut fq_ctx_struct,
205 );
206 pub fn fq_poly_add(
207 rop: *mut fq_poly_struct,
208 op1: *mut fq_poly_struct,
209 op2: *mut fq_poly_struct,
210 ctx: *mut fq_ctx_struct,
211 );
212 pub fn fq_poly_add_si(
213 rop: *mut fq_poly_struct,
214 op1: *mut fq_poly_struct,
215 c: mp_limb_signed_t,
216 ctx: *mut fq_ctx_struct,
217 );
218 pub fn fq_poly_add_series(
219 rop: *mut fq_poly_struct,
220 op1: *mut fq_poly_struct,
221 op2: *mut fq_poly_struct,
222 n: mp_limb_signed_t,
223 ctx: *mut fq_ctx_struct,
224 );
225 pub fn _fq_poly_sub(
226 res: *mut fq_struct,
227 poly1: *const fq_struct,
228 len1: mp_limb_signed_t,
229 poly2: *const fq_struct,
230 len2: mp_limb_signed_t,
231 ctx: *mut fq_ctx_struct,
232 );
233 pub fn fq_poly_sub(
234 rop: *mut fq_poly_struct,
235 op1: *mut fq_poly_struct,
236 op2: *mut fq_poly_struct,
237 ctx: *mut fq_ctx_struct,
238 );
239 pub fn fq_poly_sub_series(
240 rop: *mut fq_poly_struct,
241 op1: *mut fq_poly_struct,
242 op2: *mut fq_poly_struct,
243 n: mp_limb_signed_t,
244 ctx: *mut fq_ctx_struct,
245 );
246 pub fn _fq_poly_neg(
247 rop: *mut fq_struct,
248 op: *const fq_struct,
249 len: mp_limb_signed_t,
250 ctx: *mut fq_ctx_struct,
251 );
252 pub fn fq_poly_neg(rop: *mut fq_poly_struct, op: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
253 pub fn _fq_poly_scalar_mul_fq(
254 rop: *mut fq_struct,
255 op: *const fq_struct,
256 len: mp_limb_signed_t,
257 x: *mut fmpz_poly_struct,
258 ctx: *mut fq_ctx_struct,
259 );
260 pub fn fq_poly_scalar_mul_fq(
261 rop: *mut fq_poly_struct,
262 op: *mut fq_poly_struct,
263 x: *mut fmpz_poly_struct,
264 ctx: *mut fq_ctx_struct,
265 );
266 pub fn _fq_poly_scalar_div_fq(
267 rop: *mut fq_struct,
268 op: *const fq_struct,
269 len: mp_limb_signed_t,
270 x: *mut fmpz_poly_struct,
271 ctx: *mut fq_ctx_struct,
272 );
273 pub fn fq_poly_scalar_div_fq(
274 rop: *mut fq_poly_struct,
275 op: *mut fq_poly_struct,
276 x: *mut fmpz_poly_struct,
277 ctx: *mut fq_ctx_struct,
278 );
279 pub fn _fq_poly_scalar_addmul_fq(
280 rop: *mut fq_struct,
281 op: *const fq_struct,
282 len: mp_limb_signed_t,
283 x: *mut fmpz_poly_struct,
284 ctx: *mut fq_ctx_struct,
285 );
286 pub fn fq_poly_scalar_addmul_fq(
287 rop: *mut fq_poly_struct,
288 op: *mut fq_poly_struct,
289 x: *mut fmpz_poly_struct,
290 ctx: *mut fq_ctx_struct,
291 );
292 pub fn _fq_poly_scalar_submul_fq(
293 rop: *mut fq_struct,
294 op: *const fq_struct,
295 len: mp_limb_signed_t,
296 x: *mut fmpz_poly_struct,
297 ctx: *mut fq_ctx_struct,
298 );
299 pub fn fq_poly_scalar_submul_fq(
300 rop: *mut fq_poly_struct,
301 op: *mut fq_poly_struct,
302 x: *mut fmpz_poly_struct,
303 ctx: *mut fq_ctx_struct,
304 );
305 pub fn _fq_poly_mul_classical(
306 rop: *mut fq_struct,
307 op1: *const fq_struct,
308 len1: mp_limb_signed_t,
309 op2: *const fq_struct,
310 len2: mp_limb_signed_t,
311 ctx: *mut fq_ctx_struct,
312 );
313 pub fn fq_poly_mul_classical(
314 rop: *mut fq_poly_struct,
315 op1: *mut fq_poly_struct,
316 op2: *mut fq_poly_struct,
317 ctx: *mut fq_ctx_struct,
318 );
319 pub fn _fq_poly_mul_reorder(
320 rop: *mut fq_struct,
321 op1: *const fq_struct,
322 len1: mp_limb_signed_t,
323 op2: *const fq_struct,
324 len2: mp_limb_signed_t,
325 ctx: *mut fq_ctx_struct,
326 );
327 pub fn fq_poly_mul_reorder(
328 rop: *mut fq_poly_struct,
329 op1: *mut fq_poly_struct,
330 op2: *mut fq_poly_struct,
331 ctx: *mut fq_ctx_struct,
332 );
333 pub fn _fq_poly_mul_univariate(
334 rop: *mut fq_struct,
335 op1: *const fq_struct,
336 len1: mp_limb_signed_t,
337 op2: *const fq_struct,
338 len2: mp_limb_signed_t,
339 ctx: *mut fq_ctx_struct,
340 );
341 pub fn fq_poly_mul_univariate(
342 rop: *mut fq_poly_struct,
343 op1: *mut fq_poly_struct,
344 op2: *mut fq_poly_struct,
345 ctx: *mut fq_ctx_struct,
346 );
347 pub fn _fq_poly_mul_KS(
348 rop: *mut fq_struct,
349 op1: *const fq_struct,
350 len1: mp_limb_signed_t,
351 op2: *const fq_struct,
352 len2: mp_limb_signed_t,
353 ctx: *mut fq_ctx_struct,
354 );
355 pub fn fq_poly_mul_KS(
356 rop: *mut fq_poly_struct,
357 op1: *mut fq_poly_struct,
358 op2: *mut fq_poly_struct,
359 ctx: *mut fq_ctx_struct,
360 );
361 pub fn _fq_poly_mul(
362 rop: *mut fq_struct,
363 op1: *const fq_struct,
364 len1: mp_limb_signed_t,
365 op2: *const fq_struct,
366 len2: mp_limb_signed_t,
367 ctx: *mut fq_ctx_struct,
368 );
369 pub fn fq_poly_mul(
370 rop: *mut fq_poly_struct,
371 op1: *mut fq_poly_struct,
372 op2: *mut fq_poly_struct,
373 ctx: *mut fq_ctx_struct,
374 );
375 pub fn _fq_poly_mullow_classical(
376 rop: *mut fq_struct,
377 op1: *const fq_struct,
378 len1: mp_limb_signed_t,
379 op2: *const fq_struct,
380 len2: mp_limb_signed_t,
381 n: mp_limb_signed_t,
382 ctx: *mut fq_ctx_struct,
383 );
384 pub fn fq_poly_mullow_classical(
385 rop: *mut fq_poly_struct,
386 op1: *mut fq_poly_struct,
387 op2: *mut fq_poly_struct,
388 n: mp_limb_signed_t,
389 ctx: *mut fq_ctx_struct,
390 );
391 pub fn _fq_poly_mullow_KS(
392 rop: *mut fq_struct,
393 op1: *const fq_struct,
394 len1: mp_limb_signed_t,
395 op2: *const fq_struct,
396 len2: mp_limb_signed_t,
397 n: mp_limb_signed_t,
398 ctx: *mut fq_ctx_struct,
399 );
400 pub fn fq_poly_mullow_KS(
401 rop: *mut fq_poly_struct,
402 op1: *mut fq_poly_struct,
403 op2: *mut fq_poly_struct,
404 n: mp_limb_signed_t,
405 ctx: *mut fq_ctx_struct,
406 );
407 pub fn _fq_poly_mullow_univariate(
408 rop: *mut fq_struct,
409 op1: *const fq_struct,
410 len1: mp_limb_signed_t,
411 op2: *const fq_struct,
412 len2: mp_limb_signed_t,
413 n: mp_limb_signed_t,
414 ctx: *mut fq_ctx_struct,
415 );
416 pub fn fq_poly_mullow_univariate(
417 rop: *mut fq_poly_struct,
418 op1: *mut fq_poly_struct,
419 op2: *mut fq_poly_struct,
420 n: mp_limb_signed_t,
421 ctx: *mut fq_ctx_struct,
422 );
423 pub fn _fq_poly_mullow(
424 rop: *mut fq_struct,
425 op1: *const fq_struct,
426 len1: mp_limb_signed_t,
427 op2: *const fq_struct,
428 len2: mp_limb_signed_t,
429 n: mp_limb_signed_t,
430 ctx: *mut fq_ctx_struct,
431 );
432 pub fn fq_poly_mullow(
433 rop: *mut fq_poly_struct,
434 op1: *mut fq_poly_struct,
435 op2: *mut fq_poly_struct,
436 n: mp_limb_signed_t,
437 ctx: *mut fq_ctx_struct,
438 );
439 pub fn _fq_poly_mulhigh_classical(
440 rop: *mut fq_struct,
441 op1: *const fq_struct,
442 len1: mp_limb_signed_t,
443 op2: *const fq_struct,
444 len2: mp_limb_signed_t,
445 start: mp_limb_signed_t,
446 ctx: *mut fq_ctx_struct,
447 );
448 pub fn fq_poly_mulhigh_classical(
449 rop: *mut fq_poly_struct,
450 op1: *mut fq_poly_struct,
451 op2: *mut fq_poly_struct,
452 start: mp_limb_signed_t,
453 ctx: *mut fq_ctx_struct,
454 );
455 pub fn _fq_poly_mulhigh(
456 res: *mut fq_struct,
457 poly1: *const fq_struct,
458 len1: mp_limb_signed_t,
459 poly2: *const fq_struct,
460 len2: mp_limb_signed_t,
461 n: mp_limb_signed_t,
462 ctx: *mut fq_ctx_struct,
463 );
464 pub fn fq_poly_mulhigh(
465 rop: *mut fq_poly_struct,
466 op1: *mut fq_poly_struct,
467 op2: *mut fq_poly_struct,
468 start: mp_limb_signed_t,
469 ctx: *mut fq_ctx_struct,
470 );
471 pub fn _fq_poly_mulmod(
472 res: *mut fq_struct,
473 poly1: *const fq_struct,
474 len1: mp_limb_signed_t,
475 poly2: *const fq_struct,
476 len2: mp_limb_signed_t,
477 f: *const fq_struct,
478 lenf: mp_limb_signed_t,
479 ctx: *mut fq_ctx_struct,
480 );
481 pub fn fq_poly_mulmod(
482 res: *mut fq_poly_struct,
483 poly1: *mut fq_poly_struct,
484 poly2: *mut fq_poly_struct,
485 f: *mut fq_poly_struct,
486 ctx: *mut fq_ctx_struct,
487 );
488 pub fn _fq_poly_mulmod_preinv(
489 res: *mut fq_struct,
490 poly1: *const fq_struct,
491 len1: mp_limb_signed_t,
492 poly2: *const fq_struct,
493 len2: mp_limb_signed_t,
494 f: *const fq_struct,
495 lenf: mp_limb_signed_t,
496 finv: *const fq_struct,
497 lenfinv: mp_limb_signed_t,
498 ctx: *mut fq_ctx_struct,
499 );
500 pub fn fq_poly_mulmod_preinv(
501 res: *mut fq_poly_struct,
502 poly1: *mut fq_poly_struct,
503 poly2: *mut fq_poly_struct,
504 f: *mut fq_poly_struct,
505 finv: *mut fq_poly_struct,
506 ctx: *mut fq_ctx_struct,
507 );
508 pub fn _fq_poly_sqr_classical(
509 rop: *mut fq_struct,
510 op: *const fq_struct,
511 len: mp_limb_signed_t,
512 ctx: *mut fq_ctx_struct,
513 );
514 pub fn fq_poly_sqr_classical(
515 rop: *mut fq_poly_struct,
516 op: *mut fq_poly_struct,
517 ctx: *mut fq_ctx_struct,
518 );
519 pub fn _fq_poly_sqr_reorder(
520 rop: *mut fq_struct,
521 op: *const fq_struct,
522 len: mp_limb_signed_t,
523 ctx: *mut fq_ctx_struct,
524 );
525 pub fn fq_poly_sqr_reorder(
526 rop: *mut fq_poly_struct,
527 op: *mut fq_poly_struct,
528 ctx: *mut fq_ctx_struct,
529 );
530 pub fn _fq_poly_sqr_KS(
531 rop: *mut fq_struct,
532 op: *const fq_struct,
533 len: mp_limb_signed_t,
534 ctx: *mut fq_ctx_struct,
535 );
536 pub fn fq_poly_sqr_KS(
537 rop: *mut fq_poly_struct,
538 op: *mut fq_poly_struct,
539 ctx: *mut fq_ctx_struct,
540 );
541 pub fn _fq_poly_sqr(
542 rop: *mut fq_struct,
543 op: *const fq_struct,
544 len: mp_limb_signed_t,
545 ctx: *mut fq_ctx_struct,
546 );
547 pub fn fq_poly_sqr(rop: *mut fq_poly_struct, op: *mut fq_poly_struct, ctx: *mut fq_ctx_struct);
548 pub fn _fq_poly_pow(
549 rop: *mut fq_struct,
550 op: *const fq_struct,
551 len: mp_limb_signed_t,
552 e: mp_limb_t,
553 ctx: *mut fq_ctx_struct,
554 );
555 pub fn fq_poly_pow(
556 rop: *mut fq_poly_struct,
557 op: *mut fq_poly_struct,
558 e: mp_limb_t,
559 ctx: *mut fq_ctx_struct,
560 );
561 pub fn _fq_poly_pow_trunc_binexp(
562 res: *mut fq_struct,
563 poly: *const fq_struct,
564 e: mp_limb_t,
565 trunc: mp_limb_signed_t,
566 ctx: *mut fq_ctx_struct,
567 );
568 pub fn fq_poly_pow_trunc_binexp(
569 res: *mut fq_poly_struct,
570 poly: *mut fq_poly_struct,
571 e: mp_limb_t,
572 trunc: mp_limb_signed_t,
573 ctx: *mut fq_ctx_struct,
574 );
575 pub fn _fq_poly_pow_trunc(
576 res: *mut fq_struct,
577 poly: *const fq_struct,
578 e: mp_limb_t,
579 trunc: mp_limb_signed_t,
580 ctx: *mut fq_ctx_struct,
581 );
582 pub fn fq_poly_pow_trunc(
583 res: *mut fq_poly_struct,
584 poly: *mut fq_poly_struct,
585 e: mp_limb_t,
586 trunc: mp_limb_signed_t,
587 ctx: *mut fq_ctx_struct,
588 );
589 pub fn _fq_poly_powmod_fmpz_binexp(
590 res: *mut fq_struct,
591 poly: *const fq_struct,
592 e: *mut fmpz,
593 f: *const fq_struct,
594 lenf: mp_limb_signed_t,
595 ctx: *mut fq_ctx_struct,
596 );
597 pub fn fq_poly_powmod_fmpz_binexp(
598 res: *mut fq_poly_struct,
599 poly: *mut fq_poly_struct,
600 e: *mut fmpz,
601 f: *mut fq_poly_struct,
602 ctx: *mut fq_ctx_struct,
603 );
604 pub fn _fq_poly_powmod_fmpz_binexp_preinv(
605 res: *mut fq_struct,
606 poly: *const fq_struct,
607 e: *mut fmpz,
608 f: *const fq_struct,
609 lenf: mp_limb_signed_t,
610 finv: *const fq_struct,
611 lenfinv: mp_limb_signed_t,
612 ctx: *mut fq_ctx_struct,
613 );
614 pub fn fq_poly_powmod_fmpz_binexp_preinv(
615 res: *mut fq_poly_struct,
616 poly: *mut fq_poly_struct,
617 e: *mut fmpz,
618 f: *mut fq_poly_struct,
619 finv: *mut fq_poly_struct,
620 ctx: *mut fq_ctx_struct,
621 );
622 pub fn _fq_poly_powmod_ui_binexp(
623 res: *mut fq_struct,
624 poly: *const fq_struct,
625 e: mp_limb_t,
626 f: *const fq_struct,
627 lenf: mp_limb_signed_t,
628 ctx: *mut fq_ctx_struct,
629 );
630 pub fn fq_poly_powmod_ui_binexp(
631 res: *mut fq_poly_struct,
632 poly: *mut fq_poly_struct,
633 e: mp_limb_t,
634 f: *mut fq_poly_struct,
635 ctx: *mut fq_ctx_struct,
636 );
637 pub fn _fq_poly_powmod_ui_binexp_preinv(
638 res: *mut fq_struct,
639 poly: *const fq_struct,
640 e: mp_limb_t,
641 f: *const fq_struct,
642 lenf: mp_limb_signed_t,
643 finv: *const fq_struct,
644 lenfinv: mp_limb_signed_t,
645 ctx: *mut fq_ctx_struct,
646 );
647 pub fn fq_poly_powmod_ui_binexp_preinv(
648 res: *mut fq_poly_struct,
649 poly: *mut fq_poly_struct,
650 e: mp_limb_t,
651 f: *mut fq_poly_struct,
652 finv: *mut fq_poly_struct,
653 ctx: *mut fq_ctx_struct,
654 );
655 pub fn _fq_poly_powmod_fmpz_sliding_preinv(
656 res: *mut fq_struct,
657 poly: *const fq_struct,
658 e: *mut fmpz,
659 k: mp_limb_t,
660 f: *const fq_struct,
661 lenf: mp_limb_signed_t,
662 finv: *const fq_struct,
663 lenfinv: mp_limb_signed_t,
664 ctx: *mut fq_ctx_struct,
665 );
666 pub fn fq_poly_powmod_fmpz_sliding_preinv(
667 res: *mut fq_poly_struct,
668 poly: *mut fq_poly_struct,
669 e: *mut fmpz,
670 k: mp_limb_t,
671 f: *mut fq_poly_struct,
672 finv: *mut fq_poly_struct,
673 ctx: *mut fq_ctx_struct,
674 );
675 pub fn _fq_poly_powmod_x_fmpz_preinv(
676 res: *mut fq_struct,
677 e: *mut fmpz,
678 f: *const fq_struct,
679 lenf: mp_limb_signed_t,
680 finv: *const fq_struct,
681 lenfinv: mp_limb_signed_t,
682 ctx: *mut fq_ctx_struct,
683 );
684 pub fn fq_poly_powmod_x_fmpz_preinv(
685 res: *mut fq_poly_struct,
686 e: *mut fmpz,
687 f: *mut fq_poly_struct,
688 finv: *mut fq_poly_struct,
689 ctx: *mut fq_ctx_struct,
690 );
691 pub fn _fq_poly_shift_left(
692 rop: *mut fq_struct,
693 op: *const fq_struct,
694 len: mp_limb_signed_t,
695 n: mp_limb_signed_t,
696 ctx: *mut fq_ctx_struct,
697 );
698 pub fn fq_poly_shift_left(
699 rop: *mut fq_poly_struct,
700 op: *mut fq_poly_struct,
701 n: mp_limb_signed_t,
702 ctx: *mut fq_ctx_struct,
703 );
704 pub fn _fq_poly_shift_right(
705 rop: *mut fq_struct,
706 op: *const fq_struct,
707 len: mp_limb_signed_t,
708 n: mp_limb_signed_t,
709 ctx: *mut fq_ctx_struct,
710 );
711 pub fn fq_poly_shift_right(
712 rop: *mut fq_poly_struct,
713 op: *mut fq_poly_struct,
714 n: mp_limb_signed_t,
715 ctx: *mut fq_ctx_struct,
716 );
717 pub fn _fq_poly_hamming_weight(
718 op: *const fq_struct,
719 len: mp_limb_signed_t,
720 ctx: *mut fq_ctx_struct,
721 ) -> mp_limb_signed_t;
722 pub fn fq_poly_hamming_weight(
723 op: *mut fq_poly_struct,
724 ctx: *mut fq_ctx_struct,
725 ) -> mp_limb_signed_t;
726 pub fn fq_poly_gcd_euclidean(
727 rop: *mut fq_poly_struct,
728 op1: *mut fq_poly_struct,
729 op2: *mut fq_poly_struct,
730 ctx: *mut fq_ctx_struct,
731 );
732 pub fn _fq_poly_gcd_euclidean(
733 G: *mut fq_struct,
734 A: *const fq_struct,
735 lenA: mp_limb_signed_t,
736 B: *const fq_struct,
737 lenB: mp_limb_signed_t,
738 invB: *mut fmpz_poly_struct,
739 ctx: *mut fq_ctx_struct,
740 ) -> mp_limb_signed_t;
741 pub fn _fq_poly_gcd(
742 G: *mut fq_struct,
743 A: *const fq_struct,
744 lenA: mp_limb_signed_t,
745 B: *const fq_struct,
746 lenB: mp_limb_signed_t,
747 invB: *mut fmpz_poly_struct,
748 ctx: *mut fq_ctx_struct,
749 ) -> mp_limb_signed_t;
750 pub fn fq_poly_gcd(
751 rop: *mut fq_poly_struct,
752 op1: *mut fq_poly_struct,
753 op2: *mut fq_poly_struct,
754 ctx: *mut fq_ctx_struct,
755 );
756 pub fn _fq_poly_gcd_euclidean_f(
757 f: *mut fmpz_poly_struct,
758 G: *mut fq_struct,
759 A: *const fq_struct,
760 lenA: mp_limb_signed_t,
761 B: *const fq_struct,
762 lenB: mp_limb_signed_t,
763 ctx: *mut fq_ctx_struct,
764 ) -> mp_limb_signed_t;
765 pub fn fq_poly_gcd_euclidean_f(
766 f: *mut fmpz_poly_struct,
767 G: *mut fq_poly_struct,
768 A: *mut fq_poly_struct,
769 B: *mut fq_poly_struct,
770 ctx: *mut fq_ctx_struct,
771 );
772 pub fn _fq_poly_hgcd(
773 M: *mut *mut fq_struct,
774 lenM: *mut mp_limb_signed_t,
775 A: *mut fq_struct,
776 lenA: *mut mp_limb_signed_t,
777 B: *mut fq_struct,
778 lenB: *mut mp_limb_signed_t,
779 a: *const fq_struct,
780 lena: mp_limb_signed_t,
781 b: *const fq_struct,
782 lenb: mp_limb_signed_t,
783 ctx: *mut fq_ctx_struct,
784 ) -> mp_limb_signed_t;
785 pub fn _fq_poly_gcd_hgcd(
786 G: *mut fq_struct,
787 A: *const fq_struct,
788 lenA: mp_limb_signed_t,
789 B: *const fq_struct,
790 lenB: mp_limb_signed_t,
791 invB: *mut fmpz_poly_struct,
792 ctx: *mut fq_ctx_struct,
793 ) -> mp_limb_signed_t;
794 pub fn fq_poly_gcd_hgcd(
795 G: *mut fq_poly_struct,
796 A: *mut fq_poly_struct,
797 B: *mut fq_poly_struct,
798 ctx: *mut fq_ctx_struct,
799 );
800 pub fn _fq_poly_xgcd_euclidean_f(
801 f: *mut fmpz_poly_struct,
802 G: *mut fq_struct,
803 S: *mut fq_struct,
804 fq: *mut fq_struct,
805 A: *const fq_struct,
806 lenA: mp_limb_signed_t,
807 B: *const fq_struct,
808 lenB: mp_limb_signed_t,
809 ctx: *mut fq_ctx_struct,
810 ) -> mp_limb_signed_t;
811 pub fn fq_poly_xgcd_euclidean_f(
812 f: *mut fmpz_poly_struct,
813 G: *mut fq_poly_struct,
814 S: *mut fq_poly_struct,
815 fq: *mut fq_poly_struct,
816 A: *mut fq_poly_struct,
817 B: *mut fq_poly_struct,
818 ctx: *mut fq_ctx_struct,
819 );
820 pub fn _fq_poly_xgcd_euclidean(
821 G: *mut fq_struct,
822 S: *mut fq_struct,
823 fq: *mut fq_struct,
824 A: *const fq_struct,
825 lenA: mp_limb_signed_t,
826 B: *const fq_struct,
827 lenB: mp_limb_signed_t,
828 invB: *mut fmpz_poly_struct,
829 ctx: *mut fq_ctx_struct,
830 ) -> mp_limb_signed_t;
831 pub fn fq_poly_xgcd_euclidean(
832 G: *mut fq_poly_struct,
833 S: *mut fq_poly_struct,
834 fq: *mut fq_poly_struct,
835 A: *mut fq_poly_struct,
836 B: *mut fq_poly_struct,
837 ctx: *mut fq_ctx_struct,
838 );
839 pub fn _fq_poly_xgcd(
840 G: *mut fq_struct,
841 S: *mut fq_struct,
842 fq: *mut fq_struct,
843 A: *const fq_struct,
844 lenA: mp_limb_signed_t,
845 B: *const fq_struct,
846 lenB: mp_limb_signed_t,
847 invB: *mut fmpz_poly_struct,
848 ctx: *mut fq_ctx_struct,
849 ) -> mp_limb_signed_t;
850 pub fn fq_poly_xgcd(
851 G: *mut fq_poly_struct,
852 S: *mut fq_poly_struct,
853 fq: *mut fq_poly_struct,
854 A: *mut fq_poly_struct,
855 B: *mut fq_poly_struct,
856 ctx: *mut fq_ctx_struct,
857 );
858 pub fn fq_poly_remove(
859 f: *mut fq_poly_struct,
860 g: *mut fq_poly_struct,
861 ctx: *mut fq_ctx_struct,
862 ) -> mp_limb_t;
863 pub fn _fq_poly_div_basecase(
864 Q: *mut fq_struct,
865 R: *mut fq_struct,
866 A: *const fq_struct,
867 lenA: mp_limb_signed_t,
868 B: *const fq_struct,
869 lenB: mp_limb_signed_t,
870 invB: *mut fmpz_poly_struct,
871 ctx: *mut fq_ctx_struct,
872 );
873 pub fn fq_poly_div_basecase(
874 Q: *mut fq_poly_struct,
875 A: *mut fq_poly_struct,
876 B: *mut fq_poly_struct,
877 ctx: *mut fq_ctx_struct,
878 );
879 pub fn _fq_poly_divrem_basecase(
880 Q: *mut fq_struct,
881 R: *mut fq_struct,
882 A: *const fq_struct,
883 lenA: mp_limb_signed_t,
884 B: *const fq_struct,
885 lenB: mp_limb_signed_t,
886 invB: *mut fmpz_poly_struct,
887 ctx: *mut fq_ctx_struct,
888 );
889 pub fn fq_poly_divrem_basecase(
890 Q: *mut fq_poly_struct,
891 R: *mut fq_poly_struct,
892 A: *mut fq_poly_struct,
893 B: *mut fq_poly_struct,
894 ctx: *mut fq_ctx_struct,
895 );
896 pub fn _fq_poly_divrem_divconquer_recursive(
897 Q: *mut fq_struct,
898 BQ: *mut fq_struct,
899 W: *mut fq_struct,
900 A: *const fq_struct,
901 B: *const fq_struct,
902 lenB: mp_limb_signed_t,
903 invB: *mut fmpz_poly_struct,
904 ctx: *mut fq_ctx_struct,
905 );
906 pub fn _fq_poly_divrem_divconquer(
907 Q: *mut fq_struct,
908 R: *mut fq_struct,
909 A: *const fq_struct,
910 lenA: mp_limb_signed_t,
911 B: *const fq_struct,
912 lenB: mp_limb_signed_t,
913 invB: *mut fmpz_poly_struct,
914 ctx: *mut fq_ctx_struct,
915 );
916 pub fn fq_poly_divrem_divconquer(
917 Q: *mut fq_poly_struct,
918 R: *mut fq_poly_struct,
919 A: *mut fq_poly_struct,
920 B: *mut fq_poly_struct,
921 ctx: *mut fq_ctx_struct,
922 );
923 pub fn _fq_poly_divrem(
924 Q: *mut fq_struct,
925 R: *mut fq_struct,
926 A: *const fq_struct,
927 lenA: mp_limb_signed_t,
928 B: *const fq_struct,
929 lenB: mp_limb_signed_t,
930 invB: *mut fmpz_poly_struct,
931 ctx: *mut fq_ctx_struct,
932 );
933 pub fn fq_poly_divrem(
934 Q: *mut fq_poly_struct,
935 R: *mut fq_poly_struct,
936 A: *mut fq_poly_struct,
937 B: *mut fq_poly_struct,
938 ctx: *mut fq_ctx_struct,
939 );
940 pub fn _fq_poly_rem(
941 R: *mut fq_struct,
942 A: *const fq_struct,
943 lenA: mp_limb_signed_t,
944 B: *const fq_struct,
945 lenB: mp_limb_signed_t,
946 invB: *mut fmpz_poly_struct,
947 ctx: *mut fq_ctx_struct,
948 );
949 pub fn fq_poly_rem(
950 R: *mut fq_poly_struct,
951 A: *mut fq_poly_struct,
952 B: *mut fq_poly_struct,
953 ctx: *mut fq_ctx_struct,
954 );
955 pub fn _fq_poly_inv_series_newton(
956 Qinv: *mut fq_struct,
957 Q: *const fq_struct,
958 n: mp_limb_signed_t,
959 cinv: *mut fmpz_poly_struct,
960 ctx: *mut fq_ctx_struct,
961 );
962 pub fn fq_poly_inv_series_newton(
963 Qinv: *mut fq_poly_struct,
964 Q: *mut fq_poly_struct,
965 n: mp_limb_signed_t,
966 ctx: *mut fq_ctx_struct,
967 );
968 pub fn _fq_poly_inv_series(
969 Qinv: *mut fq_struct,
970 Q: *const fq_struct,
971 n: mp_limb_signed_t,
972 cinv: *mut fmpz_poly_struct,
973 ctx: *mut fq_ctx_struct,
974 );
975 pub fn fq_poly_inv_series(
976 Qinv: *mut fq_poly_struct,
977 Q: *mut fq_poly_struct,
978 n: mp_limb_signed_t,
979 ctx: *mut fq_ctx_struct,
980 );
981 pub fn _fq_poly_div_series(
982 Q: *mut fq_struct,
983 A: *const fq_struct,
984 Alen: mp_limb_signed_t,
985 B: *const fq_struct,
986 Blen: mp_limb_signed_t,
987 n: mp_limb_signed_t,
988 ctx: *mut fq_ctx_struct,
989 );
990 pub fn fq_poly_div_series(
991 Q: *mut fq_poly_struct,
992 A: *mut fq_poly_struct,
993 B: *mut fq_poly_struct,
994 n: mp_limb_signed_t,
995 ctx: *mut fq_ctx_struct,
996 );
997 pub fn _fq_poly_div_newton_n_preinv(
998 Q: *mut fq_struct,
999 A: *const fq_struct,
1000 lenA: mp_limb_signed_t,
1001 B: *const fq_struct,
1002 lenB: mp_limb_signed_t,
1003 Binv: *const fq_struct,
1004 lenBinv: mp_limb_signed_t,
1005 ctx: *mut fq_ctx_struct,
1006 );
1007 pub fn fq_poly_div_newton_n_preinv(
1008 Q: *mut fq_poly_struct,
1009 A: *mut fq_poly_struct,
1010 B: *mut fq_poly_struct,
1011 Binv: *mut fq_poly_struct,
1012 ctx: *mut fq_ctx_struct,
1013 );
1014 pub fn _fq_poly_divrem_newton_n_preinv(
1015 Q: *mut fq_struct,
1016 R: *mut fq_struct,
1017 A: *const fq_struct,
1018 lenA: mp_limb_signed_t,
1019 B: *const fq_struct,
1020 lenB: mp_limb_signed_t,
1021 Binv: *const fq_struct,
1022 lenBinv: mp_limb_signed_t,
1023 ctx: *mut fq_ctx_struct,
1024 );
1025 pub fn fq_poly_divrem_newton_n_preinv(
1026 Q: *mut fq_poly_struct,
1027 R: *mut fq_poly_struct,
1028 A: *mut fq_poly_struct,
1029 B: *mut fq_poly_struct,
1030 Binv: *mut fq_poly_struct,
1031 ctx: *mut fq_ctx_struct,
1032 );
1033 pub fn _fq_poly_divrem_f(
1034 f: *mut fmpz_poly_struct,
1035 Q: *mut fq_struct,
1036 R: *mut fq_struct,
1037 A: *const fq_struct,
1038 lenA: mp_limb_signed_t,
1039 B: *const fq_struct,
1040 lenB: mp_limb_signed_t,
1041 ctx: *mut fq_ctx_struct,
1042 );
1043 pub fn fq_poly_divrem_f(
1044 f: *mut fmpz_poly_struct,
1045 Q: *mut fq_poly_struct,
1046 R: *mut fq_poly_struct,
1047 A: *mut fq_poly_struct,
1048 B: *mut fq_poly_struct,
1049 ctx: *mut fq_ctx_struct,
1050 );
1051 pub fn _fq_poly_divides(
1052 Q: *mut fq_struct,
1053 A: *const fq_struct,
1054 lenA: mp_limb_signed_t,
1055 B: *const fq_struct,
1056 lenB: mp_limb_signed_t,
1057 invB: *mut fmpz_poly_struct,
1058 ctx: *mut fq_ctx_struct,
1059 ) -> c_int;
1060 pub fn fq_poly_divides(
1061 Q: *mut fq_poly_struct,
1062 A: *mut fq_poly_struct,
1063 B: *mut fq_poly_struct,
1064 ctx: *mut fq_ctx_struct,
1065 ) -> c_int;
1066 pub fn _fq_poly_derivative(
1067 rop: *mut fq_struct,
1068 op: *const fq_struct,
1069 len: mp_limb_signed_t,
1070 ctx: *mut fq_ctx_struct,
1071 );
1072 pub fn fq_poly_derivative(
1073 rop: *mut fq_poly_struct,
1074 op: *mut fq_poly_struct,
1075 ctx: *mut fq_ctx_struct,
1076 );
1077 pub fn _fq_poly_evaluate_fq(
1078 rop: *mut fmpz_poly_struct,
1079 op: *const fq_struct,
1080 len: mp_limb_signed_t,
1081 a: *mut fmpz_poly_struct,
1082 ctx: *mut fq_ctx_struct,
1083 );
1084 pub fn fq_poly_evaluate_fq(
1085 res: *mut fmpz_poly_struct,
1086 f: *mut fq_poly_struct,
1087 a: *mut fmpz_poly_struct,
1088 ctx: *mut fq_ctx_struct,
1089 );
1090 pub fn _fq_poly_evaluate_fq_vec(
1091 ys: *mut fq_struct,
1092 coeffs: *const fq_struct,
1093 len: mp_limb_signed_t,
1094 xs: *const fq_struct,
1095 n: mp_limb_signed_t,
1096 ctx: *mut fq_ctx_struct,
1097 );
1098 pub fn fq_poly_evaluate_fq_vec(
1099 ys: *mut fq_struct,
1100 poly: *mut fq_poly_struct,
1101 xs: *const fq_struct,
1102 n: mp_limb_signed_t,
1103 ctx: *mut fq_ctx_struct,
1104 );
1105 pub fn _fq_poly_tree_alloc(
1106 len: mp_limb_signed_t,
1107 ctx: *mut fq_ctx_struct,
1108 ) -> *mut *mut fq_poly_struct;
1109 pub fn _fq_poly_tree_free(
1110 tree: *mut *mut fq_poly_struct,
1111 len: mp_limb_signed_t,
1112 ctx: *mut fq_ctx_struct,
1113 );
1114 pub fn _fq_poly_tree_build(
1115 tree: *mut *mut fq_poly_struct,
1116 roots: *const fq_struct,
1117 len: mp_limb_signed_t,
1118 ctx: *mut fq_ctx_struct,
1119 );
1120 pub fn _fq_poly_evaluate_fq_vec_fast_precomp(
1121 vs: *mut fq_struct,
1122 poly: *const fq_struct,
1123 plen: mp_limb_signed_t,
1124 tree: *const *mut fq_poly_struct,
1125 len: mp_limb_signed_t,
1126 ctx: *mut fq_ctx_struct,
1127 );
1128 pub fn _fq_poly_evaluate_fq_vec_fast(
1129 ys: *mut fq_struct,
1130 poly: *const fq_struct,
1131 plen: mp_limb_signed_t,
1132 xs: *const fq_struct,
1133 n: mp_limb_signed_t,
1134 ctx: *mut fq_ctx_struct,
1135 );
1136 pub fn fq_poly_evaluate_fq_vec_fast(
1137 ys: *mut fq_struct,
1138 poly: *mut fq_poly_struct,
1139 xs: *const fq_struct,
1140 n: mp_limb_signed_t,
1141 ctx: *mut fq_ctx_struct,
1142 );
1143 pub fn _fq_poly_evaluate_fq_vec_iter(
1144 ys: *mut fq_struct,
1145 coeffs: *const fq_struct,
1146 len: mp_limb_signed_t,
1147 xs: *const fq_struct,
1148 n: mp_limb_signed_t,
1149 ctx: *mut fq_ctx_struct,
1150 );
1151 pub fn fq_poly_evaluate_fq_vec_iter(
1152 ys: *mut fq_struct,
1153 poly: *mut fq_poly_struct,
1154 xs: *const fq_struct,
1155 n: mp_limb_signed_t,
1156 ctx: *mut fq_ctx_struct,
1157 );
1158 pub fn _fq_poly_compose_divconquer(
1159 rop: *mut fq_struct,
1160 op1: *const fq_struct,
1161 len1: mp_limb_signed_t,
1162 op2: *const fq_struct,
1163 len2: mp_limb_signed_t,
1164 ctx: *mut fq_ctx_struct,
1165 );
1166 pub fn fq_poly_compose_divconquer(
1167 rop: *mut fq_poly_struct,
1168 op1: *mut fq_poly_struct,
1169 op2: *mut fq_poly_struct,
1170 ctx: *mut fq_ctx_struct,
1171 );
1172 pub fn _fq_poly_compose_horner(
1173 rop: *mut fq_struct,
1174 op1: *const fq_struct,
1175 len1: mp_limb_signed_t,
1176 op2: *const fq_struct,
1177 len2: mp_limb_signed_t,
1178 ctx: *mut fq_ctx_struct,
1179 );
1180 pub fn fq_poly_compose_horner(
1181 rop: *mut fq_poly_struct,
1182 op1: *mut fq_poly_struct,
1183 op2: *mut fq_poly_struct,
1184 ctx: *mut fq_ctx_struct,
1185 );
1186 pub fn _fq_poly_compose(
1187 rop: *mut fq_struct,
1188 op1: *const fq_struct,
1189 len1: mp_limb_signed_t,
1190 op2: *const fq_struct,
1191 len2: mp_limb_signed_t,
1192 ctx: *mut fq_ctx_struct,
1193 );
1194 pub fn fq_poly_compose(
1195 rop: *mut fq_poly_struct,
1196 op1: *mut fq_poly_struct,
1197 op2: *mut fq_poly_struct,
1198 ctx: *mut fq_ctx_struct,
1199 );
1200 pub fn _fq_poly_compose_mod(
1201 res: *mut fq_struct,
1202 f: *const fq_struct,
1203 lenf: mp_limb_signed_t,
1204 g: *const fq_struct,
1205 h: *const fq_struct,
1206 lenh: mp_limb_signed_t,
1207 ctx: *mut fq_ctx_struct,
1208 );
1209 pub fn fq_poly_compose_mod(
1210 res: *mut fq_poly_struct,
1211 poly1: *mut fq_poly_struct,
1212 poly2: *mut fq_poly_struct,
1213 poly3: *mut fq_poly_struct,
1214 ctx: *mut fq_ctx_struct,
1215 );
1216 pub fn _fq_poly_compose_mod_preinv(
1217 res: *mut fq_struct,
1218 f: *const fq_struct,
1219 lenf: mp_limb_signed_t,
1220 g: *const fq_struct,
1221 h: *const fq_struct,
1222 lenh: mp_limb_signed_t,
1223 hinv: *const fq_struct,
1224 lenhinv: mp_limb_signed_t,
1225 ctx: *mut fq_ctx_struct,
1226 );
1227 pub fn fq_poly_compose_mod_preinv(
1228 res: *mut fq_poly_struct,
1229 poly1: *mut fq_poly_struct,
1230 poly2: *mut fq_poly_struct,
1231 poly3: *mut fq_poly_struct,
1232 poly3inv: *mut fq_poly_struct,
1233 ctx: *mut fq_ctx_struct,
1234 );
1235 pub fn _fq_poly_compose_mod_horner(
1236 res: *mut fq_struct,
1237 f: *const fq_struct,
1238 lenf: mp_limb_signed_t,
1239 g: *const fq_struct,
1240 h: *const fq_struct,
1241 lenh: mp_limb_signed_t,
1242 ctx: *mut fq_ctx_struct,
1243 );
1244 pub fn fq_poly_compose_mod_horner(
1245 res: *mut fq_poly_struct,
1246 poly1: *mut fq_poly_struct,
1247 poly2: *mut fq_poly_struct,
1248 poly3: *mut fq_poly_struct,
1249 ctx: *mut fq_ctx_struct,
1250 );
1251 pub fn _fq_poly_compose_mod_horner_preinv(
1252 res: *mut fq_struct,
1253 f: *const fq_struct,
1254 lenf: mp_limb_signed_t,
1255 g: *const fq_struct,
1256 h: *const fq_struct,
1257 lenh: mp_limb_signed_t,
1258 hinv: *const fq_struct,
1259 lenhinv: mp_limb_signed_t,
1260 ctx: *mut fq_ctx_struct,
1261 );
1262 pub fn fq_poly_compose_mod_horner_preinv(
1263 res: *mut fq_poly_struct,
1264 poly1: *mut fq_poly_struct,
1265 poly2: *mut fq_poly_struct,
1266 poly3: *mut fq_poly_struct,
1267 poly3inv: *mut fq_poly_struct,
1268 ctx: *mut fq_ctx_struct,
1269 );
1270 pub fn fq_poly_compose_mod_brent_kung(
1271 res: *mut fq_poly_struct,
1272 poly1: *mut fq_poly_struct,
1273 poly2: *mut fq_poly_struct,
1274 poly3: *mut fq_poly_struct,
1275 ctx: *mut fq_ctx_struct,
1276 );
1277 pub fn _fq_poly_compose_mod_brent_kung(
1278 res: *mut fq_struct,
1279 poly1: *const fq_struct,
1280 len1: mp_limb_signed_t,
1281 poly2: *const fq_struct,
1282 poly3: *const fq_struct,
1283 len3: mp_limb_signed_t,
1284 ctx: *mut fq_ctx_struct,
1285 );
1286 pub fn _fq_poly_compose_mod_brent_kung_preinv(
1287 res: *mut fq_struct,
1288 poly1: *const fq_struct,
1289 len1: mp_limb_signed_t,
1290 poly2: *const fq_struct,
1291 poly3: *const fq_struct,
1292 len3: mp_limb_signed_t,
1293 poly3inv: *const fq_struct,
1294 len3inv: mp_limb_signed_t,
1295 ctx: *mut fq_ctx_struct,
1296 );
1297 pub fn fq_poly_compose_mod_brent_kung_preinv(
1298 res: *mut fq_poly_struct,
1299 poly1: *mut fq_poly_struct,
1300 poly2: *mut fq_poly_struct,
1301 poly3: *mut fq_poly_struct,
1302 poly3inv: *mut fq_poly_struct,
1303 ctx: *mut fq_ctx_struct,
1304 );
1305 pub fn _fq_poly_reduce_matrix_mod_poly(
1306 A: *mut fq_mat_struct,
1307 B: *mut fq_mat_struct,
1308 f: *mut fq_poly_struct,
1309 ctx: *mut fq_ctx_struct,
1310 );
1311 pub fn _fq_poly_precompute_matrix(
1312 A: *mut fq_mat_struct,
1313 poly1: *const fq_struct,
1314 poly2: *const fq_struct,
1315 len2: mp_limb_signed_t,
1316 poly2inv: *const fq_struct,
1317 len2inv: mp_limb_signed_t,
1318 ctx: *mut fq_ctx_struct,
1319 );
1320 pub fn fq_poly_precompute_matrix(
1321 A: *mut fq_mat_struct,
1322 poly1: *mut fq_poly_struct,
1323 poly2: *mut fq_poly_struct,
1324 poly2inv: *mut fq_poly_struct,
1325 ctx: *mut fq_ctx_struct,
1326 );
1327 pub fn _fq_poly_compose_mod_brent_kung_precomp_preinv(
1328 res: *mut fq_struct,
1329 poly1: *const fq_struct,
1330 len1: mp_limb_signed_t,
1331 A: *mut fq_mat_struct,
1332 poly3: *const fq_struct,
1333 len3: mp_limb_signed_t,
1334 poly3inv: *const fq_struct,
1335 len3inv: mp_limb_signed_t,
1336 ctx: *mut fq_ctx_struct,
1337 );
1338 pub fn fq_poly_compose_mod_brent_kung_precomp_preinv(
1339 res: *mut fq_poly_struct,
1340 poly1: *mut fq_poly_struct,
1341 A: *mut fq_mat_struct,
1342 poly3: *mut fq_poly_struct,
1343 poly3inv: *mut fq_poly_struct,
1344 ctx: *mut fq_ctx_struct,
1345 );
1346 pub fn _fq_poly_fprint_pretty(
1347 file: *mut FILE,
1348 poly: *const fq_struct,
1349 len: mp_limb_signed_t,
1350 x: *const c_char,
1351 ctx: *mut fq_ctx_struct,
1352 ) -> c_int;
1353 pub fn fq_poly_fprint_pretty(
1354 file: *mut FILE,
1355 poly: *mut fq_poly_struct,
1356 x: *const c_char,
1357 ctx: *mut fq_ctx_struct,
1358 ) -> c_int;
1359 pub fn _fq_poly_fprint(
1360 file: *mut FILE,
1361 poly: *const fq_struct,
1362 len: mp_limb_signed_t,
1363 ctx: *mut fq_ctx_struct,
1364 ) -> c_int;
1365 pub fn fq_poly_fprint(
1366 file: *mut FILE,
1367 poly: *mut fq_poly_struct,
1368 ctx: *mut fq_ctx_struct,
1369 ) -> c_int;
1370 pub fn _fq_poly_print(
1371 poly: *const fq_struct,
1372 len: mp_limb_signed_t,
1373 ctx: *mut fq_ctx_struct,
1374 ) -> c_int;
1375 pub fn fq_poly_print(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> c_int;
1376 pub fn _fq_poly_print_pretty(
1377 poly: *const fq_struct,
1378 len: mp_limb_signed_t,
1379 x: *const c_char,
1380 ctx: *mut fq_ctx_struct,
1381 ) -> c_int;
1382 pub fn fq_poly_print_pretty(
1383 poly: *mut fq_poly_struct,
1384 x: *const c_char,
1385 ctx: *mut fq_ctx_struct,
1386 ) -> c_int;
1387 pub fn _fq_poly_get_str_pretty(
1388 poly: *const fq_struct,
1389 len: mp_limb_signed_t,
1390 x: *const c_char,
1391 ctx: *mut fq_ctx_struct,
1392 ) -> *mut c_char;
1393 pub fn fq_poly_get_str_pretty(
1394 poly: *mut fq_poly_struct,
1395 x: *const c_char,
1396 ctx: *mut fq_ctx_struct,
1397 ) -> *mut c_char;
1398 pub fn _fq_poly_get_str(
1399 poly: *const fq_struct,
1400 len: mp_limb_signed_t,
1401 ctx: *mut fq_ctx_struct,
1402 ) -> *mut c_char;
1403 pub fn fq_poly_get_str(poly: *mut fq_poly_struct, ctx: *mut fq_ctx_struct) -> *mut c_char;
1404 pub fn fq_mat_charpoly_danilevsky(
1405 p: *mut fq_poly_struct,
1406 A: *mut fq_mat_struct,
1407 ctx: *mut fq_ctx_struct,
1408 );
1409 pub fn fq_mat_charpoly(p: *mut fq_poly_struct, M: *mut fq_mat_struct, ctx: *mut fq_ctx_struct);
1410 pub fn fq_mat_minpoly(p: *mut fq_poly_struct, X: *mut fq_mat_struct, ctx: *mut fq_ctx_struct);
1411}