1#![allow(non_camel_case_types)]
2use crate::deps::*;
7use crate::flint::*;
8use crate::fmpq::fmpq;
9use crate::fmpz::{fmpz, fmpz_preinvn_struct};
10use libc::{c_char, c_int, FILE};
11
12#[repr(C)]
13#[derive(Debug, Copy, Clone, Hash)]
14pub struct fmpz_poly_struct {
15 pub coeffs: *mut fmpz,
16 pub alloc: mp_limb_signed_t,
17 pub length: mp_limb_signed_t,
18}
19pub type fmpz_poly_t = [fmpz_poly_struct; 1usize];
27
28#[repr(C)]
29#[derive(Debug, Copy, Clone)]
30pub struct fmpz_poly_powers_precomp {
31 pub powers: *mut *mut fmpz,
32 pub len: mp_limb_signed_t,
33}
34
35pub type fmpz_poly_powers_precomp_t = [fmpz_poly_powers_precomp; 1usize];
36
37#[repr(C)]
38#[derive(Debug, Copy, Clone)]
39pub struct fmpz_poly_factor {
40 pub c: fmpz,
41 pub p: *mut fmpz_poly_struct,
42 pub exp: *mut mp_limb_signed_t,
43 pub num: mp_limb_signed_t,
44 pub alloc: mp_limb_signed_t,
45}
46
47pub type fmpz_poly_factor_t = [fmpz_poly_factor; 1usize];
48
49#[repr(C)]
50#[derive(Debug, Copy, Clone)]
51pub struct fmpz_poly_mul_precache {
52 pub jj: *mut *mut mp_limb_t,
53 pub n: mp_limb_signed_t,
54 pub len2: mp_limb_signed_t,
55 pub loglen: mp_limb_signed_t,
56 pub bits2: mp_limb_signed_t,
57 pub limbs: mp_limb_signed_t,
58 pub poly2: fmpz_poly_t,
59}
60
61pub type fmpz_poly_mul_precache_t = [fmpz_poly_mul_precache; 1usize];
62
63extern "C" {
64 pub fn fmpz_poly_init(poly: *mut fmpz_poly_struct);
65 pub fn fmpz_poly_init2(poly: *mut fmpz_poly_struct, alloc: mp_limb_signed_t);
66 pub fn fmpz_poly_realloc(poly: *mut fmpz_poly_struct, alloc: mp_limb_signed_t);
67 pub fn fmpz_poly_fit_length(poly: *mut fmpz_poly_struct, len: mp_limb_signed_t);
68 pub fn fmpz_poly_clear(poly: *mut fmpz_poly_struct);
69 pub fn _fmpz_poly_normalise(poly: *mut fmpz_poly_struct);
70 pub fn _fmpz_poly_set_length(poly: *mut fmpz_poly_struct, newlen: mp_limb_signed_t);
71 pub fn fmpz_poly_attach_truncate(
72 trunc: *mut fmpz_poly_struct,
73 poly: *const fmpz_poly_struct,
74 n: mp_limb_signed_t,
75 );
76 pub fn fmpz_poly_attach_shift(
77 trunc: *mut fmpz_poly_struct,
78 poly: *const fmpz_poly_struct,
79 n: mp_limb_signed_t,
80 );
81 pub fn fmpz_poly_length(poly: *const fmpz_poly_struct) -> mp_limb_signed_t;
82 pub fn fmpz_poly_degree(poly: *const fmpz_poly_struct) -> mp_limb_signed_t;
83 pub fn fmpz_poly_set(poly1: *mut fmpz_poly_struct, poly2: *const fmpz_poly_struct);
84 pub fn fmpz_poly_set_ui(poly: *mut fmpz_poly_struct, c: mp_limb_t);
85 pub fn fmpz_poly_set_si(poly: *mut fmpz_poly_struct, c: mp_limb_signed_t);
86 pub fn fmpz_poly_set_fmpz(poly: *mut fmpz_poly_struct, c: *const fmpz);
87 pub fn fmpz_poly_set_mpz(poly: *mut fmpz_poly_struct, c: *const __mpz_struct);
88 pub fn _fmpz_poly_set_str(poly: *mut fmpz, str_: *const c_char) -> c_int;
89 pub fn fmpz_poly_set_str(poly: *mut fmpz_poly_struct, str_: *const c_char) -> c_int;
90 pub fn _fmpz_poly_get_str(poly: *const fmpz, len: mp_limb_signed_t) -> *mut c_char;
91 pub fn fmpz_poly_get_str(poly: *const fmpz_poly_struct) -> *mut c_char;
92 pub fn _fmpz_poly_get_str_pretty(
93 poly: *const fmpz,
94 len: mp_limb_signed_t,
95 x: *const c_char,
96 ) -> *mut c_char;
97 pub fn fmpz_poly_get_str_pretty(poly: *const fmpz_poly_struct, x: *const c_char)
98 -> *mut c_char;
99 pub fn fmpz_poly_zero(poly: *mut fmpz_poly_struct);
100 pub fn fmpz_poly_one(poly: *mut fmpz_poly_struct);
101 pub fn fmpz_poly_zero_coeffs(
102 poly: *mut fmpz_poly_struct,
103 i: mp_limb_signed_t,
104 j: mp_limb_signed_t,
105 );
106 pub fn fmpz_poly_swap(poly1: *mut fmpz_poly_struct, poly2: *mut fmpz_poly_struct);
107 pub fn _fmpz_poly_reverse(
108 res: *mut fmpz,
109 poly: *const fmpz,
110 len: mp_limb_signed_t,
111 n: mp_limb_signed_t,
112 );
113 pub fn fmpz_poly_reverse(
114 res: *mut fmpz_poly_struct,
115 poly: *const fmpz_poly_struct,
116 n: mp_limb_signed_t,
117 );
118 pub fn fmpz_poly_deflation(input: *const fmpz_poly_struct) -> mp_limb_t;
119 pub fn fmpz_poly_deflate(
120 result: *mut fmpz_poly_struct,
121 input: *const fmpz_poly_struct,
122 deflation: mp_limb_t,
123 );
124 pub fn fmpz_poly_inflate(
125 result: *mut fmpz_poly_struct,
126 input: *const fmpz_poly_struct,
127 inflation: mp_limb_t,
128 );
129 pub fn fmpz_poly_truncate(poly: *mut fmpz_poly_struct, newlen: mp_limb_signed_t);
130 pub fn fmpz_poly_set_trunc(
131 res: *mut fmpz_poly_struct,
132 poly: *const fmpz_poly_struct,
133 n: mp_limb_signed_t,
134 );
135 pub fn fmpz_poly_randtest(
136 f: *mut fmpz_poly_struct,
137 state: *mut flint_rand_s,
138 len: mp_limb_signed_t,
139 bits: mp_limb_t,
140 );
141 pub fn fmpz_poly_randtest_unsigned(
142 f: *mut fmpz_poly_struct,
143 state: *mut flint_rand_s,
144 len: mp_limb_signed_t,
145 bits: mp_limb_t,
146 );
147 pub fn fmpz_poly_randtest_not_zero(
148 f: *mut fmpz_poly_struct,
149 state: *mut flint_rand_s,
150 len: mp_limb_signed_t,
151 bits: mp_limb_t,
152 );
153 pub fn fmpz_poly_randtest_no_real_root(
154 p: *mut fmpz_poly_struct,
155 state: *mut flint_rand_s,
156 len: mp_limb_signed_t,
157 bits: mp_limb_t,
158 );
159 pub fn fmpz_poly_get_coeff_si(
160 poly: *const fmpz_poly_struct,
161 n: mp_limb_signed_t,
162 ) -> mp_limb_signed_t;
163 pub fn fmpz_poly_set_coeff_si(
164 poly: *mut fmpz_poly_struct,
165 n: mp_limb_signed_t,
166 x: mp_limb_signed_t,
167 );
168 pub fn fmpz_poly_get_coeff_ui(poly: *const fmpz_poly_struct, n: mp_limb_signed_t) -> mp_limb_t;
169 pub fn fmpz_poly_set_coeff_ui(poly: *mut fmpz_poly_struct, n: mp_limb_signed_t, x: mp_limb_t);
170 pub fn fmpz_poly_set_coeff_fmpz(
171 poly: *mut fmpz_poly_struct,
172 n: mp_limb_signed_t,
173 x: *const fmpz,
174 );
175 pub fn fmpz_poly_get_coeff_fmpz(
176 x: *mut fmpz,
177 poly: *const fmpz_poly_struct,
178 n: mp_limb_signed_t,
179 );
180 pub fn fmpz_poly_equal(poly1: *const fmpz_poly_struct, poly2: *const fmpz_poly_struct)
181 -> c_int;
182 pub fn fmpz_poly_equal_trunc(
183 poly1: *const fmpz_poly_struct,
184 poly2: *const fmpz_poly_struct,
185 n: mp_limb_signed_t,
186 ) -> c_int;
187 pub fn _fmpz_poly_is_one(poly: *const fmpz, len: mp_limb_signed_t) -> c_int;
188 pub fn fmpz_poly_is_one(op: *const fmpz_poly_struct) -> c_int;
189 pub fn fmpz_poly_is_unit(op: *const fmpz_poly_struct) -> c_int;
190 pub fn fmpz_poly_is_gen(op: *const fmpz_poly_struct) -> c_int;
191 pub fn fmpz_poly_equal_fmpz(poly: *const fmpz_poly_struct, c: *const fmpz) -> c_int;
192 pub fn _fmpz_poly_add(
193 res: *mut fmpz,
194 poly1: *const fmpz,
195 len1: mp_limb_signed_t,
196 poly2: *const fmpz,
197 len2: mp_limb_signed_t,
198 );
199 pub fn fmpz_poly_add(
200 res: *mut fmpz_poly_struct,
201 poly1: *const fmpz_poly_struct,
202 poly2: *const fmpz_poly_struct,
203 );
204 pub fn fmpz_poly_add_series(
205 res: *mut fmpz_poly_struct,
206 poly1: *const fmpz_poly_struct,
207 poly2: *const fmpz_poly_struct,
208 n: mp_limb_signed_t,
209 );
210 pub fn _fmpz_poly_sub(
211 res: *mut fmpz,
212 poly1: *const fmpz,
213 len1: mp_limb_signed_t,
214 poly2: *const fmpz,
215 len2: mp_limb_signed_t,
216 );
217 pub fn fmpz_poly_sub(
218 res: *mut fmpz_poly_struct,
219 poly1: *const fmpz_poly_struct,
220 poly2: *const fmpz_poly_struct,
221 );
222 pub fn fmpz_poly_sub_series(
223 res: *mut fmpz_poly_struct,
224 poly1: *const fmpz_poly_struct,
225 poly2: *const fmpz_poly_struct,
226 n: mp_limb_signed_t,
227 );
228 pub fn fmpz_poly_neg(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
229 pub fn fmpz_poly_scalar_abs(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
230 pub fn fmpz_poly_scalar_mul_ui(
231 poly1: *mut fmpz_poly_struct,
232 poly2: *const fmpz_poly_struct,
233 x: mp_limb_t,
234 );
235 pub fn fmpz_poly_scalar_mul_si(
236 poly1: *mut fmpz_poly_struct,
237 poly2: *const fmpz_poly_struct,
238 x: mp_limb_signed_t,
239 );
240 pub fn fmpz_poly_scalar_mul_fmpz(
241 poly1: *mut fmpz_poly_struct,
242 poly2: *const fmpz_poly_struct,
243 x: *const fmpz,
244 );
245 pub fn fmpz_poly_scalar_addmul_fmpz(
246 poly1: *mut fmpz_poly_struct,
247 poly2: *const fmpz_poly_struct,
248 x: *const fmpz,
249 );
250 pub fn fmpz_poly_scalar_submul_fmpz(
251 poly1: *mut fmpz_poly_struct,
252 poly2: *const fmpz_poly_struct,
253 x: *const fmpz,
254 );
255 pub fn fmpz_poly_scalar_fdiv_ui(
256 poly1: *mut fmpz_poly_struct,
257 poly2: *const fmpz_poly_struct,
258 x: mp_limb_t,
259 );
260 pub fn fmpz_poly_scalar_fdiv_si(
261 poly1: *mut fmpz_poly_struct,
262 poly2: *const fmpz_poly_struct,
263 x: mp_limb_signed_t,
264 );
265 pub fn fmpz_poly_scalar_fdiv_fmpz(
266 poly1: *mut fmpz_poly_struct,
267 poly2: *const fmpz_poly_struct,
268 x: *const fmpz,
269 );
270 pub fn fmpz_poly_scalar_tdiv_ui(
271 poly1: *mut fmpz_poly_struct,
272 poly2: *const fmpz_poly_struct,
273 x: mp_limb_t,
274 );
275 pub fn fmpz_poly_scalar_tdiv_si(
276 poly1: *mut fmpz_poly_struct,
277 poly2: *const fmpz_poly_struct,
278 x: mp_limb_signed_t,
279 );
280 pub fn fmpz_poly_scalar_tdiv_fmpz(
281 poly1: *mut fmpz_poly_struct,
282 poly2: *const fmpz_poly_struct,
283 x: *const fmpz,
284 );
285 pub fn fmpz_poly_scalar_divexact_ui(
286 poly1: *mut fmpz_poly_struct,
287 poly2: *const fmpz_poly_struct,
288 x: mp_limb_t,
289 );
290 pub fn fmpz_poly_scalar_divexact_si(
291 poly1: *mut fmpz_poly_struct,
292 poly2: *const fmpz_poly_struct,
293 x: mp_limb_signed_t,
294 );
295 pub fn fmpz_poly_scalar_divexact_fmpz(
296 poly1: *mut fmpz_poly_struct,
297 poly2: *const fmpz_poly_struct,
298 x: *const fmpz,
299 );
300 pub fn fmpz_poly_scalar_fdiv_2exp(
301 poly1: *mut fmpz_poly_struct,
302 poly2: *const fmpz_poly_struct,
303 exp: mp_limb_t,
304 );
305 pub fn fmpz_poly_scalar_tdiv_2exp(
306 poly1: *mut fmpz_poly_struct,
307 poly2: *const fmpz_poly_struct,
308 exp: mp_limb_t,
309 );
310 pub fn fmpz_poly_scalar_mul_2exp(
311 poly1: *mut fmpz_poly_struct,
312 poly2: *const fmpz_poly_struct,
313 exp: mp_limb_t,
314 );
315 pub fn fmpz_poly_scalar_mod_fmpz(
316 poly1: *mut fmpz_poly_struct,
317 poly2: *const fmpz_poly_struct,
318 x: *const fmpz,
319 );
320 pub fn fmpz_poly_scalar_smod_fmpz(
321 poly1: *mut fmpz_poly_struct,
322 poly2: *const fmpz_poly_struct,
323 x: *const fmpz,
324 );
325 pub fn _fmpz_poly_remove_content_2exp(
326 pol: *mut fmpz,
327 len: mp_limb_signed_t,
328 ) -> mp_limb_signed_t;
329 pub fn _fmpz_poly_scale_2exp(pol: *mut fmpz, len: mp_limb_signed_t, k: mp_limb_signed_t);
330 pub fn _fmpz_poly_bit_pack(
331 arr: mp_ptr,
332 poly: *const fmpz,
333 len: mp_limb_signed_t,
334 bit_size: mp_limb_t,
335 negate: c_int,
336 );
337 pub fn _fmpz_poly_bit_unpack(
338 poly: *mut fmpz,
339 len: mp_limb_signed_t,
340 arr: mp_srcptr,
341 bit_size: mp_limb_t,
342 negate: c_int,
343 ) -> c_int;
344 pub fn _fmpz_poly_bit_unpack_unsigned(
345 poly: *mut fmpz,
346 len: mp_limb_signed_t,
347 arr: mp_srcptr,
348 bit_size: mp_limb_t,
349 );
350 pub fn fmpz_poly_bit_pack(f: *mut fmpz, poly: *const fmpz_poly_struct, bit_size: mp_limb_t);
351 pub fn fmpz_poly_bit_unpack(poly: *mut fmpz_poly_struct, f: *const fmpz, bit_size: mp_limb_t);
352 pub fn fmpz_poly_bit_unpack_unsigned(
353 poly: *mut fmpz_poly_struct,
354 f: *const fmpz,
355 bit_size: mp_limb_t,
356 );
357 pub fn _fmpz_poly_mul_classical(
358 res: *mut fmpz,
359 poly1: *const fmpz,
360 len1: mp_limb_signed_t,
361 poly2: *const fmpz,
362 len2: mp_limb_signed_t,
363 );
364 pub fn fmpz_poly_mul_classical(
365 res: *mut fmpz_poly_struct,
366 poly1: *const fmpz_poly_struct,
367 poly2: *const fmpz_poly_struct,
368 );
369 pub fn _fmpz_poly_mullow_classical(
370 res: *mut fmpz,
371 poly1: *const fmpz,
372 len1: mp_limb_signed_t,
373 poly2: *const fmpz,
374 len2: mp_limb_signed_t,
375 n: mp_limb_signed_t,
376 );
377 pub fn fmpz_poly_mullow_classical(
378 res: *mut fmpz_poly_struct,
379 poly1: *const fmpz_poly_struct,
380 poly2: *const fmpz_poly_struct,
381 n: mp_limb_signed_t,
382 );
383 pub fn _fmpz_poly_mulhigh_classical(
384 res: *mut fmpz,
385 poly1: *const fmpz,
386 len1: mp_limb_signed_t,
387 poly2: *const fmpz,
388 len2: mp_limb_signed_t,
389 start: mp_limb_signed_t,
390 );
391 pub fn fmpz_poly_mulhigh_classical(
392 res: *mut fmpz_poly_struct,
393 poly1: *const fmpz_poly_struct,
394 poly2: *const fmpz_poly_struct,
395 start: mp_limb_signed_t,
396 );
397 pub fn _fmpz_poly_mulmid_classical(
398 res: *mut fmpz,
399 poly1: *const fmpz,
400 len1: mp_limb_signed_t,
401 poly2: *const fmpz,
402 len2: mp_limb_signed_t,
403 );
404 pub fn fmpz_poly_mulmid_classical(
405 res: *mut fmpz_poly_struct,
406 poly1: *const fmpz_poly_struct,
407 poly2: *const fmpz_poly_struct,
408 );
409 pub fn fmpz_poly_mul_karatsuba(
410 res: *mut fmpz_poly_struct,
411 poly1: *const fmpz_poly_struct,
412 poly2: *const fmpz_poly_struct,
413 );
414 pub fn _fmpz_poly_mul_karatsuba(
415 res: *mut fmpz,
416 poly1: *const fmpz,
417 len1: mp_limb_signed_t,
418 poly2: *const fmpz,
419 len2: mp_limb_signed_t,
420 );
421 pub fn _fmpz_poly_mullow_karatsuba_n(
422 res: *mut fmpz,
423 poly1: *const fmpz,
424 poly2: *const fmpz,
425 n: mp_limb_signed_t,
426 );
427 pub fn fmpz_poly_mullow_karatsuba_n(
428 res: *mut fmpz_poly_struct,
429 poly1: *const fmpz_poly_struct,
430 poly2: *const fmpz_poly_struct,
431 n: mp_limb_signed_t,
432 );
433 pub fn _fmpz_poly_mulhigh_karatsuba_n(
434 res: *mut fmpz,
435 poly1: *const fmpz,
436 poly2: *const fmpz,
437 len: mp_limb_signed_t,
438 );
439 pub fn fmpz_poly_mulhigh_karatsuba_n(
440 res: *mut fmpz_poly_struct,
441 poly1: *const fmpz_poly_struct,
442 poly2: *const fmpz_poly_struct,
443 length: mp_limb_signed_t,
444 );
445 pub fn _fmpz_poly_mul_KS(
446 res: *mut fmpz,
447 poly1: *const fmpz,
448 len1: mp_limb_signed_t,
449 poly2: *const fmpz,
450 len2: mp_limb_signed_t,
451 );
452 pub fn fmpz_poly_mul_KS(
453 res: *mut fmpz_poly_struct,
454 poly1: *const fmpz_poly_struct,
455 poly2: *const fmpz_poly_struct,
456 );
457 pub fn _fmpz_poly_mullow_KS(
458 res: *mut fmpz,
459 poly1: *const fmpz,
460 len1: mp_limb_signed_t,
461 poly2: *const fmpz,
462 len2: mp_limb_signed_t,
463 n: mp_limb_signed_t,
464 );
465 pub fn fmpz_poly_mullow_KS(
466 res: *mut fmpz_poly_struct,
467 poly1: *const fmpz_poly_struct,
468 poly2: *const fmpz_poly_struct,
469 n: mp_limb_signed_t,
470 );
471 pub fn _fmpz_poly_mul_SS(
472 output: *mut fmpz,
473 input1: *const fmpz,
474 length1: mp_limb_signed_t,
475 input2: *const fmpz,
476 length2: mp_limb_signed_t,
477 );
478 pub fn fmpz_poly_mul_SS(
479 res: *mut fmpz_poly_struct,
480 poly1: *const fmpz_poly_struct,
481 poly2: *const fmpz_poly_struct,
482 );
483 pub fn _fmpz_poly_mullow_SS(
484 output: *mut fmpz,
485 input1: *const fmpz,
486 length1: mp_limb_signed_t,
487 input2: *const fmpz,
488 length2: mp_limb_signed_t,
489 n: mp_limb_signed_t,
490 );
491 pub fn fmpz_poly_mullow_SS(
492 res: *mut fmpz_poly_struct,
493 poly1: *const fmpz_poly_struct,
494 poly2: *const fmpz_poly_struct,
495 n: mp_limb_signed_t,
496 );
497 pub fn _fmpz_poly_mul(
498 res: *mut fmpz,
499 poly1: *const fmpz,
500 len1: mp_limb_signed_t,
501 poly2: *const fmpz,
502 len2: mp_limb_signed_t,
503 );
504 pub fn fmpz_poly_mul(
505 res: *mut fmpz_poly_struct,
506 poly1: *const fmpz_poly_struct,
507 poly2: *const fmpz_poly_struct,
508 );
509 pub fn _fmpz_poly_mullow(
510 res: *mut fmpz,
511 poly1: *const fmpz,
512 len1: mp_limb_signed_t,
513 poly2: *const fmpz,
514 len2: mp_limb_signed_t,
515 n: mp_limb_signed_t,
516 );
517 pub fn fmpz_poly_mullow(
518 res: *mut fmpz_poly_struct,
519 poly1: *const fmpz_poly_struct,
520 poly2: *const fmpz_poly_struct,
521 n: mp_limb_signed_t,
522 );
523 pub fn fmpz_poly_mulhigh_n(
524 res: *mut fmpz_poly_struct,
525 poly1: *const fmpz_poly_struct,
526 poly2: *const fmpz_poly_struct,
527 n: mp_limb_signed_t,
528 );
529 pub fn fmpz_poly_mul_SS_precache_init(
530 pre: *mut fmpz_poly_mul_precache,
531 len1: mp_limb_signed_t,
532 bits1: mp_limb_signed_t,
533 poly2: *const fmpz_poly_struct,
534 );
535 pub fn fmpz_poly_mul_precache_clear(pre: *mut fmpz_poly_mul_precache);
536 pub fn _fmpz_poly_mullow_SS_precache(
537 output: *mut fmpz,
538 input1: *const fmpz,
539 len1: mp_limb_signed_t,
540 pre: *const fmpz_poly_mul_precache,
541 trunc: mp_limb_signed_t,
542 );
543 pub fn fmpz_poly_mullow_SS_precache(
544 res: *mut fmpz_poly_struct,
545 poly1: *const fmpz_poly_struct,
546 pre: *const fmpz_poly_mul_precache,
547 n: mp_limb_signed_t,
548 );
549 pub fn fmpz_poly_mul_SS_precache(
550 res: *mut fmpz_poly_struct,
551 poly1: *const fmpz_poly_struct,
552 pre: *const fmpz_poly_mul_precache,
553 );
554 pub fn _fmpz_poly_sqr_KS(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
555 pub fn fmpz_poly_sqr_KS(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
556 pub fn fmpz_poly_sqr_karatsuba(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
557 pub fn _fmpz_poly_sqr_karatsuba(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
558 pub fn _fmpz_poly_sqr_classical(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
559 pub fn fmpz_poly_sqr_classical(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
560 pub fn _fmpz_poly_sqr(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
561 pub fn fmpz_poly_sqr(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
562 pub fn _fmpz_poly_sqrlow_KS(
563 res: *mut fmpz,
564 poly: *const fmpz,
565 len: mp_limb_signed_t,
566 n: mp_limb_signed_t,
567 );
568 pub fn fmpz_poly_sqrlow_KS(
569 res: *mut fmpz_poly_struct,
570 poly: *const fmpz_poly_struct,
571 n: mp_limb_signed_t,
572 );
573 pub fn _fmpz_poly_sqrlow_karatsuba_n(res: *mut fmpz, poly: *const fmpz, n: mp_limb_signed_t);
574 pub fn fmpz_poly_sqrlow_karatsuba_n(
575 res: *mut fmpz_poly_struct,
576 poly: *const fmpz_poly_struct,
577 n: mp_limb_signed_t,
578 );
579 pub fn _fmpz_poly_sqrlow_classical(
580 res: *mut fmpz,
581 poly: *const fmpz,
582 len: mp_limb_signed_t,
583 n: mp_limb_signed_t,
584 );
585 pub fn fmpz_poly_sqrlow_classical(
586 res: *mut fmpz_poly_struct,
587 poly: *const fmpz_poly_struct,
588 n: mp_limb_signed_t,
589 );
590 pub fn _fmpz_poly_sqrlow(
591 res: *mut fmpz,
592 poly: *const fmpz,
593 len: mp_limb_signed_t,
594 n: mp_limb_signed_t,
595 );
596 pub fn fmpz_poly_sqrlow(
597 res: *mut fmpz_poly_struct,
598 poly: *const fmpz_poly_struct,
599 n: mp_limb_signed_t,
600 );
601 pub fn _fmpz_poly_pow_multinomial(
602 res: *mut fmpz,
603 poly: *const fmpz,
604 len: mp_limb_signed_t,
605 e: mp_limb_t,
606 );
607 pub fn fmpz_poly_pow_multinomial(
608 res: *mut fmpz_poly_struct,
609 poly: *const fmpz_poly_struct,
610 e: mp_limb_t,
611 );
612 pub fn _fmpz_poly_pow_binomial(res: *mut fmpz, poly: *const fmpz, e: mp_limb_t);
613 pub fn fmpz_poly_pow_binomial(
614 res: *mut fmpz_poly_struct,
615 poly: *const fmpz_poly_struct,
616 e: mp_limb_t,
617 );
618 pub fn _fmpz_poly_pow_binexp(
619 res: *mut fmpz,
620 poly: *const fmpz,
621 len: mp_limb_signed_t,
622 e: mp_limb_t,
623 );
624 pub fn fmpz_poly_pow_binexp(
625 res: *mut fmpz_poly_struct,
626 poly: *const fmpz_poly_struct,
627 e: mp_limb_t,
628 );
629 pub fn _fmpz_poly_pow_addchains(
630 res: *mut fmpz,
631 poly: *const fmpz,
632 len: mp_limb_signed_t,
633 a: *const c_int,
634 n: c_int,
635 );
636 pub fn fmpz_poly_pow_addchains(
637 res: *mut fmpz_poly_struct,
638 poly: *const fmpz_poly_struct,
639 e: mp_limb_t,
640 );
641 pub fn _fmpz_poly_pow_small(
642 res: *mut fmpz,
643 poly: *const fmpz,
644 len: mp_limb_signed_t,
645 e: mp_limb_t,
646 );
647 pub fn _fmpz_poly_pow(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t, e: mp_limb_t);
648 pub fn fmpz_poly_pow(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, e: mp_limb_t);
649 pub fn _fmpz_poly_pow_trunc(
650 res: *mut fmpz,
651 poly: *const fmpz,
652 e: mp_limb_t,
653 n: mp_limb_signed_t,
654 );
655 pub fn fmpz_poly_pow_trunc(
656 res: *mut fmpz_poly_struct,
657 poly: *const fmpz_poly_struct,
658 e: mp_limb_t,
659 n: mp_limb_signed_t,
660 );
661 pub fn _fmpz_poly_shift_left(
662 res: *mut fmpz,
663 poly: *const fmpz,
664 len: mp_limb_signed_t,
665 n: mp_limb_signed_t,
666 );
667 pub fn _fmpz_poly_shift_right(
668 res: *mut fmpz,
669 poly: *const fmpz,
670 len: mp_limb_signed_t,
671 n: mp_limb_signed_t,
672 );
673 pub fn fmpz_poly_shift_left(
674 res: *mut fmpz_poly_struct,
675 poly: *const fmpz_poly_struct,
676 n: mp_limb_signed_t,
677 );
678 pub fn fmpz_poly_shift_right(
679 res: *mut fmpz_poly_struct,
680 poly: *const fmpz_poly_struct,
681 n: mp_limb_signed_t,
682 );
683 pub fn _fmpz_poly_2norm(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
684 pub fn fmpz_poly_2norm(res: *mut fmpz, poly: *const fmpz_poly_struct);
685 pub fn _fmpz_poly_2norm_normalised_bits(poly: *const fmpz, len: mp_limb_signed_t) -> mp_limb_t;
686 pub fn fmpz_poly_max_limbs(poly: *const fmpz_poly_struct) -> mp_limb_t;
687 pub fn fmpz_poly_max_bits(poly: *const fmpz_poly_struct) -> mp_limb_signed_t;
688 pub fn fmpz_poly_height(res: *mut fmpz, poly: *const fmpz_poly_struct);
689 pub fn _fmpz_poly_gcd_subresultant(
690 res: *mut fmpz,
691 poly1: *const fmpz,
692 len1: mp_limb_signed_t,
693 poly2: *const fmpz,
694 len2: mp_limb_signed_t,
695 );
696 pub fn fmpz_poly_gcd_subresultant(
697 res: *mut fmpz_poly_struct,
698 poly1: *const fmpz_poly_struct,
699 poly2: *const fmpz_poly_struct,
700 );
701 pub fn _fmpz_poly_gcd_heuristic(
702 res: *mut fmpz,
703 poly1: *const fmpz,
704 len1: mp_limb_signed_t,
705 poly2: *const fmpz,
706 len2: mp_limb_signed_t,
707 ) -> c_int;
708 pub fn fmpz_poly_gcd_heuristic(
709 res: *mut fmpz_poly_struct,
710 poly1: *const fmpz_poly_struct,
711 poly2: *const fmpz_poly_struct,
712 ) -> c_int;
713 pub fn _fmpz_poly_gcd_modular(
714 res: *mut fmpz,
715 poly1: *const fmpz,
716 len1: mp_limb_signed_t,
717 poly2: *const fmpz,
718 len2: mp_limb_signed_t,
719 );
720 pub fn fmpz_poly_gcd_modular(
721 res: *mut fmpz_poly_struct,
722 poly1: *const fmpz_poly_struct,
723 poly2: *const fmpz_poly_struct,
724 );
725 pub fn _fmpz_poly_gcd(
726 res: *mut fmpz,
727 poly1: *const fmpz,
728 len1: mp_limb_signed_t,
729 poly2: *const fmpz,
730 len2: mp_limb_signed_t,
731 );
732 pub fn fmpz_poly_gcd(
733 res: *mut fmpz_poly_struct,
734 poly1: *const fmpz_poly_struct,
735 poly2: *const fmpz_poly_struct,
736 );
737 pub fn _fmpz_poly_lcm(
738 res: *mut fmpz,
739 poly1: *const fmpz,
740 len1: mp_limb_signed_t,
741 poly2: *const fmpz,
742 len2: mp_limb_signed_t,
743 );
744 pub fn fmpz_poly_lcm(
745 res: *mut fmpz_poly_struct,
746 poly1: *const fmpz_poly_struct,
747 poly2: *const fmpz_poly_struct,
748 );
749 pub fn _fmpz_poly_resultant_euclidean(
750 res: *mut fmpz,
751 poly1: *const fmpz,
752 len1: mp_limb_signed_t,
753 poly2: *const fmpz,
754 len2: mp_limb_signed_t,
755 );
756 pub fn fmpz_poly_resultant_euclidean(
757 res: *mut fmpz,
758 poly1: *const fmpz_poly_struct,
759 poly2: *const fmpz_poly_struct,
760 );
761 pub fn _fmpz_poly_resultant_modular(
762 res: *mut fmpz,
763 poly1: *const fmpz,
764 len1: mp_limb_signed_t,
765 poly2: *const fmpz,
766 len2: mp_limb_signed_t,
767 );
768 pub fn fmpz_poly_resultant_modular(
769 res: *mut fmpz,
770 poly1: *const fmpz_poly_struct,
771 poly2: *const fmpz_poly_struct,
772 );
773 pub fn _fmpz_poly_resultant(
774 res: *mut fmpz,
775 poly1: *const fmpz,
776 len1: mp_limb_signed_t,
777 poly2: *const fmpz,
778 len2: mp_limb_signed_t,
779 );
780 pub fn fmpz_poly_resultant(
781 res: *mut fmpz,
782 poly1: *const fmpz_poly_struct,
783 poly2: *const fmpz_poly_struct,
784 );
785 pub fn _fmpz_poly_resultant_modular_div(
786 res: *mut fmpz,
787 poly1: *const fmpz,
788 len1: mp_limb_signed_t,
789 poly2: *const fmpz,
790 len2: mp_limb_signed_t,
791 divisor: *const fmpz,
792 nbits: mp_limb_signed_t,
793 );
794 pub fn fmpz_poly_resultant_modular_div(
795 res: *mut fmpz,
796 poly1: *const fmpz_poly_struct,
797 poly2: *const fmpz_poly_struct,
798 divisor: *const fmpz,
799 nbits: mp_limb_signed_t,
800 );
801 pub fn _fmpz_poly_xgcd_modular(
802 r: *mut fmpz,
803 s: *mut fmpz,
804 t: *mut fmpz,
805 poly1: *const fmpz,
806 len1: mp_limb_signed_t,
807 poly2: *const fmpz,
808 len2: mp_limb_signed_t,
809 );
810 pub fn fmpz_poly_xgcd_modular(
811 r: *mut fmpz,
812 s: *mut fmpz_poly_struct,
813 t: *mut fmpz_poly_struct,
814 poly1: *const fmpz_poly_struct,
815 poly2: *const fmpz_poly_struct,
816 );
817 pub fn _fmpz_poly_xgcd(
818 r: *mut fmpz,
819 s: *mut fmpz,
820 t: *mut fmpz,
821 poly1: *const fmpz,
822 len1: mp_limb_signed_t,
823 poly2: *const fmpz,
824 len2: mp_limb_signed_t,
825 );
826 pub fn fmpz_poly_xgcd(
827 r: *mut fmpz,
828 s: *mut fmpz_poly_struct,
829 t: *mut fmpz_poly_struct,
830 poly1: *const fmpz_poly_struct,
831 poly2: *const fmpz_poly_struct,
832 );
833 pub fn _fmpz_poly_discriminant(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
834 pub fn fmpz_poly_discriminant(res: *mut fmpz, poly: *const fmpz_poly_struct);
835 pub fn _fmpz_poly_content(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
836 pub fn fmpz_poly_content(res: *mut fmpz, poly: *const fmpz_poly_struct);
837 pub fn _fmpz_poly_primitive_part(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
838 pub fn fmpz_poly_primitive_part(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
839 pub fn _fmpz_poly_is_squarefree(poly: *const fmpz, len: mp_limb_signed_t) -> c_int;
840 pub fn fmpz_poly_is_squarefree(poly: *const fmpz_poly_struct) -> c_int;
841 pub fn _fmpz_poly_divrem_basecase(
842 Q: *mut fmpz,
843 R: *mut fmpz,
844 A: *const fmpz,
845 lenA: mp_limb_signed_t,
846 B: *const fmpz,
847 lenB: mp_limb_signed_t,
848 exact: c_int,
849 ) -> c_int;
850 pub fn fmpz_poly_divrem_basecase(
851 Q: *mut fmpz_poly_struct,
852 R: *mut fmpz_poly_struct,
853 A: *const fmpz_poly_struct,
854 B: *const fmpz_poly_struct,
855 );
856 pub fn _fmpz_poly_divrem_divconquer_recursive(
857 Q: *mut fmpz,
858 BQ: *mut fmpz,
859 W: *mut fmpz,
860 A: *const fmpz,
861 B: *const fmpz,
862 lenB: mp_limb_signed_t,
863 exact: c_int,
864 ) -> c_int;
865 pub fn _fmpz_poly_divrem_divconquer(
866 Q: *mut fmpz,
867 R: *mut fmpz,
868 A: *const fmpz,
869 lenA: mp_limb_signed_t,
870 B: *const fmpz,
871 lenB: mp_limb_signed_t,
872 exact: c_int,
873 ) -> c_int;
874 pub fn fmpz_poly_divrem_divconquer(
875 Q: *mut fmpz_poly_struct,
876 R: *mut fmpz_poly_struct,
877 A: *const fmpz_poly_struct,
878 B: *const fmpz_poly_struct,
879 );
880 pub fn _fmpz_poly_divrem(
881 Q: *mut fmpz,
882 R: *mut fmpz,
883 A: *const fmpz,
884 lenA: mp_limb_signed_t,
885 B: *const fmpz,
886 lenB: mp_limb_signed_t,
887 exact: c_int,
888 ) -> c_int;
889 pub fn fmpz_poly_divrem(
890 Q: *mut fmpz_poly_struct,
891 R: *mut fmpz_poly_struct,
892 A: *const fmpz_poly_struct,
893 B: *const fmpz_poly_struct,
894 );
895 pub fn _fmpz_poly_div_basecase(
896 Q: *mut fmpz,
897 R: *mut fmpz,
898 A: *const fmpz,
899 lenA: mp_limb_signed_t,
900 B: *const fmpz,
901 lenB: mp_limb_signed_t,
902 exact: c_int,
903 ) -> c_int;
904 pub fn fmpz_poly_div_basecase(
905 Q: *mut fmpz_poly_struct,
906 A: *mut fmpz_poly_struct,
907 B: *const fmpz_poly_struct,
908 );
909 pub fn _fmpz_poly_divremlow_divconquer_recursive(
910 Q: *mut fmpz,
911 QB: *mut fmpz,
912 A: *const fmpz,
913 B: *const fmpz,
914 lenB: mp_limb_signed_t,
915 exact: c_int,
916 ) -> c_int;
917 pub fn _fmpz_poly_div_divconquer_recursive(
918 Q: *mut fmpz,
919 temp: *mut fmpz,
920 A: *const fmpz,
921 B: *const fmpz,
922 lenB: mp_limb_signed_t,
923 exact: c_int,
924 ) -> c_int;
925 pub fn _fmpz_poly_div_divconquer(
926 Q: *mut fmpz,
927 A: *const fmpz,
928 lenA: mp_limb_signed_t,
929 B: *const fmpz,
930 lenB: mp_limb_signed_t,
931 exact: c_int,
932 ) -> c_int;
933 pub fn fmpz_poly_div_divconquer(
934 Q: *mut fmpz_poly_struct,
935 A: *const fmpz_poly_struct,
936 B: *const fmpz_poly_struct,
937 );
938 pub fn _fmpz_poly_div(
939 Q: *mut fmpz,
940 A: *const fmpz,
941 lenA: mp_limb_signed_t,
942 B: *const fmpz,
943 lenB: mp_limb_signed_t,
944 exact: c_int,
945 ) -> c_int;
946 pub fn fmpz_poly_div(
947 Q: *mut fmpz_poly_struct,
948 A: *const fmpz_poly_struct,
949 B: *const fmpz_poly_struct,
950 );
951 pub fn _fmpz_poly_preinvert(B_inv: *mut fmpz, B: *const fmpz, n: mp_limb_signed_t);
952 pub fn fmpz_poly_preinvert(B_inv: *mut fmpz_poly_struct, B: *const fmpz_poly_struct);
953 pub fn _fmpz_poly_div_preinv(
954 Q: *mut fmpz,
955 A: *const fmpz,
956 len1: mp_limb_signed_t,
957 B: *const fmpz,
958 B_inv: *const fmpz,
959 len2: mp_limb_signed_t,
960 );
961 pub fn fmpz_poly_div_preinv(
962 Q: *mut fmpz_poly_struct,
963 A: *const fmpz_poly_struct,
964 B: *const fmpz_poly_struct,
965 B_inv: *const fmpz_poly_struct,
966 );
967 pub fn _fmpz_poly_divrem_preinv(
968 Q: *mut fmpz,
969 A: *const fmpz,
970 len1: mp_limb_signed_t,
971 B: *const fmpz,
972 B_inv: *const fmpz,
973 len2: mp_limb_signed_t,
974 );
975 pub fn fmpz_poly_divrem_preinv(
976 Q: *mut fmpz_poly_struct,
977 R: *mut fmpz_poly_struct,
978 A: *const fmpz_poly_struct,
979 B: *const fmpz_poly_struct,
980 B_inv: *const fmpz_poly_struct,
981 );
982 pub fn _fmpz_poly_powers_precompute(B: *const fmpz, len: mp_limb_signed_t) -> *mut *mut fmpz;
983 pub fn fmpz_poly_powers_precompute(
984 pinv: *mut fmpz_poly_powers_precomp,
985 poly: *const fmpz_poly_struct,
986 );
987 pub fn _fmpz_poly_powers_clear(powers: *mut *mut fmpz, len: mp_limb_signed_t);
988 pub fn fmpz_poly_powers_clear(pinv: *mut fmpz_poly_powers_precomp);
989 pub fn _fmpz_poly_rem_powers_precomp(
990 A: *mut fmpz,
991 m: mp_limb_signed_t,
992 B: *const fmpz,
993 n: mp_limb_signed_t,
994 powers: *mut *mut fmpz,
995 );
996 pub fn fmpz_poly_rem_powers_precomp(
997 R: *mut fmpz_poly_struct,
998 A: *const fmpz_poly_struct,
999 B: *const fmpz_poly_struct,
1000 B_inv: *const fmpz_poly_powers_precomp,
1001 );
1002 pub fn _fmpz_poly_rem_basecase(
1003 Q: *mut fmpz,
1004 A: *const fmpz,
1005 lenA: mp_limb_signed_t,
1006 B: *const fmpz,
1007 lenB: mp_limb_signed_t,
1008 );
1009 pub fn fmpz_poly_rem_basecase(
1010 R: *mut fmpz_poly_struct,
1011 A: *const fmpz_poly_struct,
1012 B: *const fmpz_poly_struct,
1013 );
1014 pub fn _fmpz_poly_rem(
1015 R: *mut fmpz,
1016 A: *const fmpz,
1017 lenA: mp_limb_signed_t,
1018 B: *const fmpz,
1019 lenB: mp_limb_signed_t,
1020 );
1021 pub fn fmpz_poly_rem(
1022 R: *mut fmpz_poly_struct,
1023 A: *const fmpz_poly_struct,
1024 B: *const fmpz_poly_struct,
1025 );
1026 pub fn fmpz_poly_div_root(Q: *mut fmpz_poly_struct, A: *const fmpz_poly_struct, c: *const fmpz);
1027 pub fn _fmpz_poly_div_root(Q: *mut fmpz, A: *const fmpz, len: mp_limb_signed_t, c: *const fmpz);
1028 pub fn _fmpz_poly_inv_series_basecase(
1029 Qinv: *mut fmpz,
1030 Q: *const fmpz,
1031 Qlen: mp_limb_signed_t,
1032 n: mp_limb_signed_t,
1033 );
1034 pub fn fmpz_poly_inv_series_basecase(
1035 Qinv: *mut fmpz_poly_struct,
1036 Q: *const fmpz_poly_struct,
1037 n: mp_limb_signed_t,
1038 );
1039 pub fn _fmpz_poly_inv_series_newton(
1040 Qinv: *mut fmpz,
1041 Q: *const fmpz,
1042 Qlen: mp_limb_signed_t,
1043 n: mp_limb_signed_t,
1044 );
1045 pub fn fmpz_poly_inv_series_newton(
1046 Qinv: *mut fmpz_poly_struct,
1047 Q: *const fmpz_poly_struct,
1048 n: mp_limb_signed_t,
1049 );
1050 pub fn _fmpz_poly_inv_series(
1051 Qinv: *mut fmpz,
1052 Q: *const fmpz,
1053 Qlen: mp_limb_signed_t,
1054 n: mp_limb_signed_t,
1055 );
1056 pub fn fmpz_poly_inv_series(
1057 Qinv: *mut fmpz_poly_struct,
1058 Q: *const fmpz_poly_struct,
1059 n: mp_limb_signed_t,
1060 );
1061 pub fn _fmpz_poly_div_series_basecase(
1062 Q: *mut fmpz,
1063 A: *const fmpz,
1064 Alen: mp_limb_signed_t,
1065 B: *const fmpz,
1066 Blen: mp_limb_signed_t,
1067 n: mp_limb_signed_t,
1068 );
1069 pub fn _fmpz_poly_div_series_divconquer(
1070 Q: *mut fmpz,
1071 A: *const fmpz,
1072 Alen: mp_limb_signed_t,
1073 B: *const fmpz,
1074 Blen: mp_limb_signed_t,
1075 n: mp_limb_signed_t,
1076 );
1077 pub fn _fmpz_poly_div_series(
1078 Q: *mut fmpz,
1079 A: *const fmpz,
1080 Alen: mp_limb_signed_t,
1081 B: *const fmpz,
1082 Blen: mp_limb_signed_t,
1083 n: mp_limb_signed_t,
1084 );
1085 pub fn fmpz_poly_div_series_basecase(
1086 Q: *mut fmpz_poly_struct,
1087 A: *const fmpz_poly_struct,
1088 B: *const fmpz_poly_struct,
1089 n: mp_limb_signed_t,
1090 );
1091 pub fn fmpz_poly_div_series_divconquer(
1092 Q: *mut fmpz_poly_struct,
1093 A: *const fmpz_poly_struct,
1094 B: *const fmpz_poly_struct,
1095 n: mp_limb_signed_t,
1096 );
1097 pub fn fmpz_poly_div_series(
1098 Q: *mut fmpz_poly_struct,
1099 A: *const fmpz_poly_struct,
1100 B: *const fmpz_poly_struct,
1101 n: mp_limb_signed_t,
1102 );
1103 pub fn _fmpz_poly_divides(
1104 q: *mut fmpz,
1105 a: *const fmpz,
1106 len1: mp_limb_signed_t,
1107 b: *const fmpz,
1108 len2: mp_limb_signed_t,
1109 ) -> c_int;
1110 pub fn fmpz_poly_divides(
1111 q: *mut fmpz_poly_struct,
1112 a: *const fmpz_poly_struct,
1113 b: *const fmpz_poly_struct,
1114 ) -> c_int;
1115 pub fn fmpz_poly_remove(
1116 res: *mut fmpz_poly_struct,
1117 poly1: *const fmpz_poly_struct,
1118 poly2: *const fmpz_poly_struct,
1119 ) -> mp_limb_signed_t;
1120 pub fn _fmpz_poly_pseudo_divrem_basecase(
1121 Q: *mut fmpz,
1122 R: *mut fmpz,
1123 d: *const mp_limb_t,
1124 A: *const fmpz,
1125 A_len: mp_limb_signed_t,
1126 B: *const fmpz,
1127 B_len: mp_limb_signed_t,
1128 inv: *const fmpz_preinvn_struct,
1129 );
1130 pub fn fmpz_poly_pseudo_divrem_basecase(
1131 Q: *mut fmpz_poly_struct,
1132 R: *mut fmpz_poly_struct,
1133 d: *const mp_limb_t,
1134 A: *const fmpz_poly_struct,
1135 B: *const fmpz_poly_struct,
1136 );
1137 pub fn _fmpz_poly_pseudo_divrem_divconquer(
1138 Q: *mut fmpz,
1139 R: *mut fmpz,
1140 d: *const mp_limb_t,
1141 A: *const fmpz,
1142 lenA: mp_limb_signed_t,
1143 B: *const fmpz,
1144 lenB: mp_limb_signed_t,
1145 inv: *const fmpz_preinvn_struct,
1146 );
1147 pub fn fmpz_poly_pseudo_divrem_divconquer(
1148 Q: *mut fmpz_poly_struct,
1149 R: *mut fmpz_poly_struct,
1150 d: *mut mp_limb_t,
1151 A: *const fmpz_poly_struct,
1152 B: *const fmpz_poly_struct,
1153 );
1154 pub fn _fmpz_poly_pseudo_divrem_cohen(
1155 Q: *mut fmpz,
1156 R: *mut fmpz,
1157 A: *const fmpz,
1158 lenA: mp_limb_signed_t,
1159 B: *const fmpz,
1160 lenB: mp_limb_signed_t,
1161 );
1162 pub fn fmpz_poly_pseudo_divrem_cohen(
1163 Q: *mut fmpz_poly_struct,
1164 R: *mut fmpz_poly_struct,
1165 A: *const fmpz_poly_struct,
1166 B: *const fmpz_poly_struct,
1167 );
1168 pub fn _fmpz_poly_pseudo_rem_cohen(
1169 R: *mut fmpz,
1170 A: *const fmpz,
1171 lenA: mp_limb_signed_t,
1172 B: *const fmpz,
1173 lenB: mp_limb_signed_t,
1174 );
1175 pub fn fmpz_poly_pseudo_rem_cohen(
1176 R: *mut fmpz_poly_struct,
1177 A: *const fmpz_poly_struct,
1178 B: *const fmpz_poly_struct,
1179 );
1180 pub fn _fmpz_poly_pseudo_divrem(
1181 Q: *mut fmpz,
1182 R: *mut fmpz,
1183 d: *const mp_limb_t,
1184 A: *const fmpz,
1185 A_len: mp_limb_signed_t,
1186 B: *const fmpz,
1187 B_len: mp_limb_signed_t,
1188 inv: *const fmpz_preinvn_struct,
1189 );
1190 pub fn fmpz_poly_pseudo_divrem(
1191 Q: *mut fmpz_poly_struct,
1192 R: *mut fmpz_poly_struct,
1193 d: *const mp_limb_t,
1194 A: *const fmpz_poly_struct,
1195 B: *const fmpz_poly_struct,
1196 );
1197 pub fn _fmpz_poly_pseudo_div(
1198 Q: *mut fmpz,
1199 d: *const mp_limb_t,
1200 A: *const fmpz,
1201 lenA: mp_limb_signed_t,
1202 B: *const fmpz,
1203 lenB: mp_limb_signed_t,
1204 inv: *const fmpz_preinvn_struct,
1205 );
1206 pub fn fmpz_poly_pseudo_div(
1207 Q: *mut fmpz_poly_struct,
1208 d: *const mp_limb_t,
1209 A: *const fmpz_poly_struct,
1210 B: *const fmpz_poly_struct,
1211 );
1212 pub fn _fmpz_poly_pseudo_rem(
1213 R: *mut fmpz,
1214 d: *const mp_limb_t,
1215 A: *const fmpz,
1216 lenA: mp_limb_signed_t,
1217 B: *const fmpz,
1218 lenB: mp_limb_signed_t,
1219 inv: *const fmpz_preinvn_struct,
1220 );
1221 pub fn fmpz_poly_pseudo_rem(
1222 R: *mut fmpz_poly_struct,
1223 d: *const mp_limb_t,
1224 A: *const fmpz_poly_struct,
1225 B: *const fmpz_poly_struct,
1226 );
1227 pub fn fmpz_poly_divlow_smodp(
1228 res: *mut fmpz,
1229 f: *const fmpz_poly_struct,
1230 g: *const fmpz_poly_struct,
1231 p: *const fmpz,
1232 n: mp_limb_signed_t,
1233 );
1234 pub fn fmpz_poly_divhigh_smodp(
1235 res: *mut fmpz,
1236 f: *const fmpz_poly_struct,
1237 g: *const fmpz_poly_struct,
1238 p: *const fmpz,
1239 n: mp_limb_signed_t,
1240 );
1241 pub fn _fmpz_poly_derivative(rpoly: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
1242 pub fn fmpz_poly_derivative(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
1243 pub fn _fmpz_poly_evaluate_divconquer_fmpz(
1244 res: *mut fmpz,
1245 poly: *const fmpz,
1246 len: mp_limb_signed_t,
1247 a: *const fmpz,
1248 );
1249 pub fn fmpz_poly_evaluate_divconquer_fmpz(
1250 res: *mut fmpz,
1251 poly: *const fmpz_poly_struct,
1252 a: *const fmpz,
1253 );
1254 pub fn _fmpz_poly_evaluate_horner_fmpz(
1255 res: *mut fmpz,
1256 f: *const fmpz,
1257 len: mp_limb_signed_t,
1258 a: *const fmpz,
1259 );
1260 pub fn fmpz_poly_evaluate_horner_fmpz(
1261 res: *mut fmpz,
1262 f: *const fmpz_poly_struct,
1263 a: *const fmpz,
1264 );
1265 pub fn _fmpz_poly_evaluate_fmpz(
1266 res: *mut fmpz,
1267 f: *const fmpz,
1268 len: mp_limb_signed_t,
1269 a: *const fmpz,
1270 );
1271 pub fn fmpz_poly_evaluate_fmpz(res: *mut fmpz, f: *const fmpz_poly_struct, a: *const fmpz);
1272 pub fn _fmpz_poly_evaluate_horner_fmpq(
1273 rnum: *mut fmpz,
1274 rden: *mut fmpz,
1275 f: *const fmpz,
1276 len: mp_limb_signed_t,
1277 anum: *const fmpz,
1278 aden: *const fmpz,
1279 );
1280 pub fn fmpz_poly_evaluate_horner_fmpq(res: *mut fmpq, f: *mut fmpz_poly_struct, a: *mut fmpq);
1281 pub fn _fmpz_poly_evaluate_divconquer_fmpq(
1282 rnum: *mut fmpz,
1283 rden: *mut fmpz,
1284 f: *const fmpz,
1285 len: mp_limb_signed_t,
1286 anum: *const fmpz,
1287 aden: *const fmpz,
1288 );
1289 pub fn fmpz_poly_evaluate_divconquer_fmpq(
1290 res: *mut fmpq,
1291 f: *const fmpz_poly_struct,
1292 a: *const fmpq,
1293 );
1294 pub fn _fmpz_poly_evaluate_fmpq(
1295 rnum: *mut fmpz,
1296 rden: *mut fmpz,
1297 f: *const fmpz,
1298 len: mp_limb_signed_t,
1299 anum: *const fmpz,
1300 aden: *const fmpz,
1301 );
1302 pub fn fmpz_poly_evaluate_fmpq(res: *mut fmpq, f: *const fmpz_poly_struct, a: *const fmpq);
1303
1304 pub fn fmpz_poly_evaluate_mpq(
1305 res: *mut __mpq_struct,
1306 f: *const fmpz_poly_struct,
1307 a: *const __mpq_struct,
1308 );
1309 pub fn _fmpz_poly_evaluate_mod(
1310 poly: *const fmpz,
1311 len: mp_limb_signed_t,
1312 a: mp_limb_t,
1313 n: mp_limb_t,
1314 ninv: mp_limb_t,
1315 ) -> mp_limb_t;
1316 pub fn fmpz_poly_evaluate_mod(
1317 poly: *const fmpz_poly_struct,
1318 a: mp_limb_t,
1319 n: mp_limb_t,
1320 ) -> mp_limb_t;
1321 pub fn _fmpz_poly_evaluate_horner_d(poly: *const fmpz, n: mp_limb_signed_t, d: f64) -> f64;
1322 pub fn fmpz_poly_evaluate_horner_d(poly: *mut fmpz_poly_struct, d: f64) -> f64;
1323 pub fn _fmpz_poly_evaluate_horner_d_2exp(
1324 exp: *mut mp_limb_signed_t,
1325 poly: *const fmpz,
1326 n: mp_limb_signed_t,
1327 d: f64,
1328 ) -> f64;
1329 pub fn fmpz_poly_evaluate_horner_d_2exp(
1330 exp: *mut mp_limb_signed_t,
1331 poly: *const fmpz_poly_struct,
1332 d: f64,
1333 ) -> f64;
1334 pub fn _fmpz_poly_evaluate_horner_d_2exp2(
1335 exp: *mut mp_limb_signed_t,
1336 poly: *const fmpz,
1337 n: mp_limb_signed_t,
1338 d: f64,
1339 dexp: mp_limb_signed_t,
1340 prec_in: mp_limb_t,
1341 ) -> f64;
1342 pub fn fmpz_poly_evaluate_horner_d_2exp2(
1343 exp: *mut mp_limb_signed_t,
1344 poly: *const fmpz_poly_struct,
1345 d: f64,
1346 dexp: mp_limb_signed_t,
1347 prec: mp_limb_t,
1348 ) -> f64;
1349 pub fn _fmpz_poly_compose_horner(
1350 res: *mut fmpz,
1351 poly1: *const fmpz,
1352 len1: mp_limb_signed_t,
1353 poly2: *const fmpz,
1354 len2: mp_limb_signed_t,
1355 );
1356 pub fn fmpz_poly_compose_horner(
1357 res: *mut fmpz_poly_struct,
1358 poly1: *const fmpz_poly_struct,
1359 poly2: *const fmpz_poly_struct,
1360 );
1361 pub fn _fmpz_poly_compose_divconquer(
1362 res: *mut fmpz,
1363 poly1: *const fmpz,
1364 len1: mp_limb_signed_t,
1365 poly2: *const fmpz,
1366 len2: mp_limb_signed_t,
1367 );
1368 pub fn fmpz_poly_compose_divconquer(
1369 res: *mut fmpz_poly_struct,
1370 poly1: *const fmpz_poly_struct,
1371 poly2: *const fmpz_poly_struct,
1372 );
1373 pub fn _fmpz_poly_compose(
1374 res: *mut fmpz,
1375 poly1: *const fmpz,
1376 len1: mp_limb_signed_t,
1377 poly2: *const fmpz,
1378 len2: mp_limb_signed_t,
1379 );
1380 pub fn fmpz_poly_compose(
1381 res: *mut fmpz_poly_struct,
1382 poly1: *const fmpz_poly_struct,
1383 poly2: *const fmpz_poly_struct,
1384 );
1385 pub fn _fmpz_poly_taylor_shift_horner(poly: *mut fmpz, c: *const fmpz, n: mp_limb_signed_t);
1386 pub fn fmpz_poly_taylor_shift_horner(
1387 g: *mut fmpz_poly_struct,
1388 f: *const fmpz_poly_struct,
1389 c: *const fmpz,
1390 );
1391 pub fn _fmpz_poly_taylor_shift_divconquer(poly: *mut fmpz, c: *const fmpz, n: mp_limb_signed_t);
1392 pub fn fmpz_poly_taylor_shift_divconquer(
1393 g: *mut fmpz_poly_struct,
1394 f: *const fmpz_poly_struct,
1395 c: *const fmpz,
1396 );
1397 pub fn _fmpz_poly_taylor_shift_multi_mod(poly: *mut fmpz, c: *const fmpz, n: mp_limb_signed_t);
1398 pub fn fmpz_poly_taylor_shift_multi_mod(
1399 g: *mut fmpz_poly_struct,
1400 f: *const fmpz_poly_struct,
1401 c: *const fmpz,
1402 );
1403 pub fn _fmpz_poly_taylor_shift(poly: *mut fmpz, c: *const fmpz, n: mp_limb_signed_t);
1404 pub fn fmpz_poly_taylor_shift(
1405 g: *mut fmpz_poly_struct,
1406 f: *const fmpz_poly_struct,
1407 c: *const fmpz,
1408 );
1409 pub fn _fmpz_poly_compose_series_brent_kung(
1410 res: *mut fmpz,
1411 poly1: *const fmpz,
1412 len1: mp_limb_signed_t,
1413 poly2: *const fmpz,
1414 len2: mp_limb_signed_t,
1415 n: mp_limb_signed_t,
1416 );
1417 pub fn fmpz_poly_compose_series_brent_kung(
1418 res: *mut fmpz_poly_struct,
1419 poly1: *const fmpz_poly_struct,
1420 poly2: *const fmpz_poly_struct,
1421 n: mp_limb_signed_t,
1422 );
1423 pub fn _fmpz_poly_compose_series_horner(
1424 res: *mut fmpz,
1425 poly1: *const fmpz,
1426 len1: mp_limb_signed_t,
1427 poly2: *const fmpz,
1428 len2: mp_limb_signed_t,
1429 n: mp_limb_signed_t,
1430 );
1431 pub fn fmpz_poly_compose_series_horner(
1432 res: *mut fmpz_poly_struct,
1433 poly1: *const fmpz_poly_struct,
1434 poly2: *const fmpz_poly_struct,
1435 n: mp_limb_signed_t,
1436 );
1437 pub fn _fmpz_poly_compose_series(
1438 res: *mut fmpz,
1439 poly1: *const fmpz,
1440 len1: mp_limb_signed_t,
1441 poly2: *const fmpz,
1442 len2: mp_limb_signed_t,
1443 n: mp_limb_signed_t,
1444 );
1445 pub fn fmpz_poly_compose_series(
1446 res: *mut fmpz_poly_struct,
1447 poly1: *const fmpz_poly_struct,
1448 poly2: *const fmpz_poly_struct,
1449 n: mp_limb_signed_t,
1450 );
1451 pub fn _fmpz_poly_revert_series_lagrange(
1452 Qinv: *mut fmpz,
1453 Q: *const fmpz,
1454 Qlen: mp_limb_signed_t,
1455 n: mp_limb_signed_t,
1456 );
1457 pub fn fmpz_poly_revert_series_lagrange(
1458 Qinv: *mut fmpz_poly_struct,
1459 Q: *const fmpz_poly_struct,
1460 n: mp_limb_signed_t,
1461 );
1462 pub fn _fmpz_poly_revert_series_lagrange_fast(
1463 Qinv: *mut fmpz,
1464 Q: *const fmpz,
1465 Qlen: mp_limb_signed_t,
1466 n: mp_limb_signed_t,
1467 );
1468 pub fn fmpz_poly_revert_series_lagrange_fast(
1469 Qinv: *mut fmpz_poly_struct,
1470 Q: *const fmpz_poly_struct,
1471 n: mp_limb_signed_t,
1472 );
1473 pub fn _fmpz_poly_revert_series_newton(
1474 Qinv: *mut fmpz,
1475 Q: *const fmpz,
1476 Qlen: mp_limb_signed_t,
1477 n: mp_limb_signed_t,
1478 );
1479 pub fn fmpz_poly_revert_series_newton(
1480 Qinv: *mut fmpz_poly_struct,
1481 Q: *const fmpz_poly_struct,
1482 n: mp_limb_signed_t,
1483 );
1484 pub fn _fmpz_poly_revert_series(
1485 Qinv: *mut fmpz,
1486 Q: *const fmpz,
1487 Qlen: mp_limb_signed_t,
1488 n: mp_limb_signed_t,
1489 );
1490 pub fn fmpz_poly_revert_series(
1491 Qinv: *mut fmpz_poly_struct,
1492 Q: *const fmpz_poly_struct,
1493 n: mp_limb_signed_t,
1494 );
1495 pub fn _fmpz_poly_sqrtrem_classical(
1496 res: *mut fmpz,
1497 r: *mut fmpz,
1498 poly: *const fmpz,
1499 len: mp_limb_signed_t,
1500 ) -> c_int;
1501 pub fn fmpz_poly_sqrtrem_classical(
1502 b: *mut fmpz_poly_struct,
1503 r: *mut fmpz_poly_struct,
1504 a: *const fmpz_poly_struct,
1505 ) -> c_int;
1506 pub fn _fmpz_poly_sqrtrem_divconquer(
1507 res: *mut fmpz,
1508 r: *mut fmpz,
1509 poly: *const fmpz,
1510 len: mp_limb_signed_t,
1511 temp: *const fmpz,
1512 ) -> c_int;
1513 pub fn fmpz_poly_sqrtrem_divconquer(
1514 b: *mut fmpz_poly_struct,
1515 r: *mut fmpz_poly_struct,
1516 a: *const fmpz_poly_struct,
1517 ) -> c_int;
1518 pub fn _fmpz_poly_sqrt_classical(
1519 res: *mut fmpz,
1520 poly: *const fmpz,
1521 len: mp_limb_signed_t,
1522 exact: c_int,
1523 ) -> c_int;
1524 pub fn fmpz_poly_sqrt_classical(b: *mut fmpz_poly_struct, a: *const fmpz_poly_struct) -> c_int;
1525 pub fn _fmpz_poly_sqrt_divconquer(
1526 res: *mut fmpz,
1527 poly: *const fmpz,
1528 len: mp_limb_signed_t,
1529 exact: c_int,
1530 ) -> c_int;
1531 pub fn fmpz_poly_sqrt_divconquer(b: *mut fmpz_poly_struct, a: *const fmpz_poly_struct)
1532 -> c_int;
1533 pub fn _fmpz_poly_sqrt_KS(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t) -> c_int;
1534 pub fn fmpz_poly_sqrt_KS(b: *mut fmpz_poly_struct, a: *const fmpz_poly_struct) -> c_int;
1535 pub fn _fmpz_poly_sqrt(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t) -> c_int;
1536 pub fn fmpz_poly_sqrt(b: *mut fmpz_poly_struct, a: *const fmpz_poly_struct) -> c_int;
1537 pub fn _fmpz_poly_sqrt_series(
1538 res: *mut fmpz,
1539 poly: *const fmpz,
1540 len: mp_limb_signed_t,
1541 n: mp_limb_signed_t,
1542 ) -> c_int;
1543 pub fn fmpz_poly_sqrt_series(
1544 b: *mut fmpz_poly_struct,
1545 a: *const fmpz_poly_struct,
1546 n: mp_limb_signed_t,
1547 ) -> c_int;
1548 pub fn _fmpz_poly_power_sums_naive(
1549 res: *mut fmpz,
1550 poly: *const fmpz,
1551 len: mp_limb_signed_t,
1552 n: mp_limb_signed_t,
1553 );
1554 pub fn fmpz_poly_power_sums_naive(
1555 res: *mut fmpz_poly_struct,
1556 poly: *const fmpz_poly_struct,
1557 n: mp_limb_signed_t,
1558 );
1559 pub fn fmpz_poly_power_sums(
1560 res: *mut fmpz_poly_struct,
1561 poly: *const fmpz_poly_struct,
1562 n: mp_limb_signed_t,
1563 );
1564 pub fn _fmpz_poly_power_sums_to_poly(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
1565 pub fn fmpz_poly_power_sums_to_poly(res: *mut fmpz_poly_struct, Q: *const fmpz_poly_struct);
1566 pub fn _fmpz_poly_signature(
1567 r1: *mut mp_limb_signed_t,
1568 r2: *mut mp_limb_signed_t,
1569 poly: *const fmpz,
1570 len: mp_limb_signed_t,
1571 );
1572 pub fn fmpz_poly_signature(
1573 r1: *mut mp_limb_signed_t,
1574 r2: *mut mp_limb_signed_t,
1575 poly: *const fmpz_poly_struct,
1576 );
1577 pub fn _fmpz_poly_fprint(file: *mut FILE, poly: *const fmpz, len: mp_limb_signed_t) -> c_int;
1578 pub fn fmpz_poly_fprint(file: *mut FILE, poly: *const fmpz_poly_struct) -> c_int;
1579 pub fn _fmpz_poly_fprint_pretty(
1580 file: *mut FILE,
1581 poly: *const fmpz,
1582 len: mp_limb_signed_t,
1583 x: *const c_char,
1584 ) -> c_int;
1585 pub fn fmpz_poly_fprint_pretty(
1586 file: *mut FILE,
1587 poly: *mut fmpz_poly_struct,
1588 x: *const c_char,
1589 ) -> c_int;
1590 pub fn _fmpz_poly_print_pretty(
1591 poly: *const fmpz,
1592 len: mp_limb_signed_t,
1593 x: *const c_char,
1594 ) -> c_int;
1595 pub fn _fmpz_poly_print(poly: *const fmpz, n: mp_limb_signed_t) -> c_int;
1596 pub fn fmpz_poly_print(poly: *mut fmpz_poly_struct) -> c_int;
1597 pub fn fmpz_poly_print_pretty(poly: *mut fmpz_poly_struct, x: *const c_char) -> c_int;
1598 pub fn fmpz_poly_fread(file: *mut FILE, poly: *const fmpz_poly_struct) -> c_int;
1599 pub fn fmpz_poly_fread_pretty(
1600 file: *mut FILE,
1601 poly: *const fmpz_poly_struct,
1602 x: *mut *mut c_char,
1603 ) -> c_int;
1604 pub fn fmpz_poly_read(poly: *mut fmpz_poly_struct) -> c_int;
1605 pub fn fmpz_poly_read_pretty(poly: *mut fmpz_poly_struct, x: *mut *mut c_char) -> c_int;
1606 pub fn fmpz_poly_debug(poly: *mut fmpz_poly_struct);
1607 pub fn _fmpz_poly_product_roots_fmpz_vec(poly: *mut fmpz, xs: *const fmpz, n: mp_limb_signed_t);
1647 pub fn fmpz_poly_product_roots_fmpz_vec(
1648 poly: *mut fmpz_poly_struct,
1649 xs: *const fmpz,
1650 n: mp_limb_signed_t,
1651 );
1652 pub fn _fmpz_poly_product_roots_fmpq_vec(poly: *mut fmpz, xs: *const fmpq, n: mp_limb_signed_t);
1653 pub fn fmpz_poly_product_roots_fmpq_vec(
1654 poly: *mut fmpz_poly_struct,
1655 xs: *const fmpq,
1656 n: mp_limb_signed_t,
1657 );
1658 pub fn _fmpz_poly_monomial_to_newton(poly: *mut fmpz, roots: *const fmpz, n: mp_limb_signed_t);
1659 pub fn _fmpz_poly_newton_to_monomial(poly: *mut fmpz, roots: *const fmpz, n: mp_limb_signed_t);
1660 pub fn fmpz_poly_evaluate_fmpz_vec(
1661 res: *mut fmpz,
1662 f: *const fmpz_poly_struct,
1663 a: *const fmpz,
1664 n: mp_limb_signed_t,
1665 );
1666 pub fn fmpz_poly_interpolate_fmpz_vec(
1667 poly: *mut fmpz_poly_struct,
1668 xs: *const fmpz,
1669 ys: *const fmpz,
1670 n: mp_limb_signed_t,
1671 );
1672 pub fn fmpz_poly_hensel_lift(
1681 Gout: *mut fmpz_poly_struct,
1682 Hout: *mut fmpz_poly_struct,
1683 Aout: *mut fmpz_poly_struct,
1684 Bout: *mut fmpz_poly_struct,
1685 f: *const fmpz_poly_struct,
1686 g: *const fmpz_poly_struct,
1687 h: *const fmpz_poly_struct,
1688 a: *const fmpz_poly_struct,
1689 b: *const fmpz_poly_struct,
1690 p: *const fmpz,
1691 p1: *const fmpz,
1692 );
1693 pub fn _fmpz_poly_hensel_lift_without_inverse(
1694 G: *mut fmpz,
1695 H: *mut fmpz,
1696 f: *const fmpz,
1697 lenF: mp_limb_signed_t,
1698 g: *const fmpz,
1699 lenG: mp_limb_signed_t,
1700 h: *const fmpz,
1701 lenH: mp_limb_signed_t,
1702 a: *const fmpz,
1703 lenA: mp_limb_signed_t,
1704 b: *const fmpz,
1705 lenB: mp_limb_signed_t,
1706 p: *const fmpz,
1707 p1: *const fmpz,
1708 );
1709 pub fn fmpz_poly_hensel_lift_without_inverse(
1710 Gout: *mut fmpz_poly_struct,
1711 Hout: *mut fmpz_poly_struct,
1712 f: *const fmpz_poly_struct,
1713 g: *const fmpz_poly_struct,
1714 h: *const fmpz_poly_struct,
1715 a: *const fmpz_poly_struct,
1716 b: *const fmpz_poly_struct,
1717 p: *const fmpz,
1718 p1: *const fmpz,
1719 );
1720 pub fn _fmpz_poly_hensel_lift_only_inverse(
1721 A: *mut fmpz,
1722 B: *mut fmpz,
1723 G: *const fmpz,
1724 lenG: mp_limb_signed_t,
1725 H: *const fmpz,
1726 lenH: mp_limb_signed_t,
1727 a: *const fmpz,
1728 lenA: mp_limb_signed_t,
1729 b: *const fmpz,
1730 lenB: mp_limb_signed_t,
1731 p: *const fmpz,
1732 p1: *const fmpz,
1733 );
1734 pub fn fmpz_poly_hensel_lift_only_inverse(
1735 Aout: *mut fmpz_poly_struct,
1736 Bout: *mut fmpz_poly_struct,
1737 G: *const fmpz_poly_struct,
1738 H: *const fmpz_poly_struct,
1739 a: *const fmpz_poly_struct,
1740 b: *const fmpz_poly_struct,
1741 p: *const fmpz,
1742 p1: *const fmpz,
1743 );
1744 pub fn fmpz_poly_hensel_lift_tree_recursive(
1745 link: *mut mp_limb_signed_t,
1746 v: *mut fmpz_poly_t,
1747 w: *mut fmpz_poly_t,
1748 f: *mut fmpz_poly_struct,
1749 j: mp_limb_signed_t,
1750 inv: mp_limb_signed_t,
1751 p0: *const fmpz,
1752 p1: *const fmpz,
1753 );
1754 pub fn fmpz_poly_hensel_lift_tree(
1755 link: *mut mp_limb_signed_t,
1756 v: *mut fmpz_poly_t,
1757 w: *mut fmpz_poly_t,
1758 f: *mut fmpz_poly_struct,
1759 r: mp_limb_signed_t,
1760 p: *const fmpz,
1761 e0: mp_limb_signed_t,
1762 e1: mp_limb_signed_t,
1763 inv: mp_limb_signed_t,
1764 );
1765 pub fn fmpz_poly_scalar_mul_mpz(
1793 poly1: *mut fmpz_poly_struct,
1794 poly2: *const fmpz_poly_struct,
1795 x: *const __mpz_struct,
1796 );
1797 pub fn fmpz_poly_scalar_divexact_mpz(
1798 poly1: *mut fmpz_poly_struct,
1799 poly2: *const fmpz_poly_struct,
1800 x: *const __mpz_struct,
1801 );
1802 pub fn fmpz_poly_scalar_fdiv_mpz(
1803 poly1: *mut fmpz_poly_struct,
1804 poly2: *const fmpz_poly_struct,
1805 x: *const __mpz_struct,
1806 );
1807 pub fn fmpz_poly_set_coeff_mpz(
1808 poly: *mut fmpz_poly_struct,
1809 n: mp_limb_signed_t,
1810 x: *const __mpz_struct,
1811 );
1812 pub fn fmpz_poly_get_coeff_mpz(
1813 x: *mut __mpz_struct,
1814 poly: *const fmpz_poly_struct,
1815 n: mp_limb_signed_t,
1816 );
1817 pub fn _fmpz_poly_bound_roots(bound: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
1818 pub fn fmpz_poly_bound_roots(bound: *mut fmpz, poly: *const fmpz_poly_struct);
1819 pub fn _fmpz_poly_num_real_roots_sturm(
1820 n_neg: *mut mp_limb_signed_t,
1821 n_pos: *mut mp_limb_signed_t,
1822 pol: *const fmpz,
1823 len: mp_limb_signed_t,
1824 );
1825 pub fn fmpz_poly_num_real_roots_sturm(poly: *const fmpz_poly_struct) -> mp_limb_signed_t;
1826 pub fn _fmpz_poly_num_real_roots(pol: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
1827 pub fn fmpz_poly_num_real_roots(poly: *const fmpz_poly_struct) -> mp_limb_signed_t;
1828 pub fn fmpz_poly_CLD_bound(res: *mut fmpz, f: *const fmpz_poly_struct, n: mp_limb_signed_t);
1829 pub fn _fmpz_poly_cyclotomic(
1830 a: *mut fmpz,
1831 n: mp_limb_t,
1832 factors: mp_ptr,
1833 num_factors: mp_limb_signed_t,
1834 phi: mp_limb_t,
1835 );
1836 pub fn fmpz_poly_cyclotomic(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1837 pub fn _fmpz_poly_is_cyclotomic(poly: *const fmpz, len: mp_limb_signed_t) -> mp_limb_t;
1838 pub fn fmpz_poly_is_cyclotomic(poly: *const fmpz_poly_struct) -> mp_limb_t;
1839 pub fn _fmpz_poly_cos_minpoly(f: *mut fmpz, n: mp_limb_t);
1840 pub fn fmpz_poly_cos_minpoly(f: *mut fmpz_poly_struct, n: mp_limb_t);
1841 pub fn _fmpz_poly_swinnerton_dyer(T: *mut fmpz, n: mp_limb_t);
1842 pub fn fmpz_poly_swinnerton_dyer(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1843 pub fn _fmpz_poly_chebyshev_t(coeffs: *mut fmpz, n: mp_limb_t);
1844 pub fn fmpz_poly_chebyshev_t(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1845 pub fn _fmpz_poly_chebyshev_u(coeffs: *mut fmpz, n: mp_limb_t);
1846 pub fn fmpz_poly_chebyshev_u(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1847 pub fn _fmpz_poly_legendre_pt(coeffs: *mut fmpz, n: mp_limb_t);
1848 pub fn fmpz_poly_legendre_pt(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1849 pub fn _fmpz_poly_hermite_h(coeffs: *mut fmpz, n: mp_limb_t);
1850 pub fn fmpz_poly_hermite_h(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1851 pub fn _fmpz_poly_hermite_he(coeffs: *mut fmpz, n: mp_limb_t);
1852 pub fn fmpz_poly_hermite_he(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1853 pub fn _fmpz_poly_fibonacci(coeffs: *mut fmpz, n: mp_limb_t);
1854 pub fn fmpz_poly_fibonacci(poly: *mut fmpz_poly_struct, n: mp_limb_t);
1855 pub fn _fmpz_poly_eta_qexp(f: *mut fmpz, e: mp_limb_signed_t, n: mp_limb_signed_t);
1856 pub fn fmpz_poly_eta_qexp(f: *mut fmpz_poly_struct, e: mp_limb_signed_t, n: mp_limb_signed_t);
1857 pub fn _fmpz_poly_theta_qexp(f: *mut fmpz, e: mp_limb_signed_t, n: mp_limb_signed_t);
1858 pub fn fmpz_poly_theta_qexp(f: *mut fmpz_poly_struct, e: mp_limb_signed_t, n: mp_limb_signed_t);
1859 pub fn fmpz_poly_add_si(
1860 res: *mut fmpz_poly_struct,
1861 poly: *const fmpz_poly_struct,
1862 c: mp_limb_signed_t,
1863 );
1864 pub fn fmpz_poly_sub_si(
1865 res: *mut fmpz_poly_struct,
1866 poly: *const fmpz_poly_struct,
1867 c: mp_limb_signed_t,
1868 );
1869 pub fn fmpz_poly_si_sub(
1870 res: *mut fmpz_poly_struct,
1871 c: mp_limb_signed_t,
1872 poly: *const fmpz_poly_struct,
1873 );
1874 pub fn fmpz_poly_add_fmpz(
1875 res: *mut fmpz_poly_struct,
1876 poly: *const fmpz_poly_struct,
1877 c: *const fmpz,
1878 );
1879 pub fn fmpz_poly_sub_fmpz(
1880 res: *mut fmpz_poly_struct,
1881 poly: *const fmpz_poly_struct,
1882 c: *const fmpz,
1883 );
1884 pub fn fmpz_poly_fmpz_sub(
1885 res: *mut fmpz_poly_struct,
1886 c: *const fmpz,
1887 poly: *const fmpz_poly_struct,
1888 );
1889}