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