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