1use libc::*;
4use crate::deps::*;
5use crate::flint::*;
6use crate::fq_nmod_types::*;
7use crate::n_poly_types::*;
8use crate::nmod_types::*;
9
10
11pub const N_FQ_REDUCE_ITCH: u32 = 2;
12pub const N_FQ_MUL_ITCH: u32 = 4;
13pub const N_FQ_LAZY_ITCH: u32 = 6;
14pub const N_FQ_INV_ITCH: u32 = 1;
15pub const N_FQ_POLY_DIVREM_DIVCONQUER_CUTOFF: u32 = 20;
16#[repr(C)]
17pub struct n_polyun_stack_struct {
18 pub array: *mut *mut n_polyun_struct,
19 pub alloc: slong,
20 pub top: slong,
21}
22#[allow(clippy::unnecessary_operation, clippy::identity_op)]
23const _: () = {
24 ["Size of n_polyun_stack_struct"][::std::mem::size_of::<n_polyun_stack_struct>() - 24usize];
25 ["Alignment of n_polyun_stack_struct"]
26 [::std::mem::align_of::<n_polyun_stack_struct>() - 8usize];
27 ["Offset of field: n_polyun_stack_struct::array"]
28 [::std::mem::offset_of!(n_polyun_stack_struct, array) - 0usize];
29 ["Offset of field: n_polyun_stack_struct::alloc"]
30 [::std::mem::offset_of!(n_polyun_stack_struct, alloc) - 8usize];
31 ["Offset of field: n_polyun_stack_struct::top"]
32 [::std::mem::offset_of!(n_polyun_stack_struct, top) - 16usize];
33};
34impl Default for n_polyun_stack_struct {
35 fn default() -> Self {
36 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
37 unsafe {
38 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
39 s.assume_init()
40 }
41 }
42}
43pub type n_polyun_stack_t = [n_polyun_stack_struct; 1usize];
44#[repr(C)]
45pub struct n_poly_polyun_stack_struct {
46 pub poly_stack: n_poly_stack_t,
47 pub polyun_stack: n_polyun_stack_t,
48}
49#[allow(clippy::unnecessary_operation, clippy::identity_op)]
50const _: () = {
51 ["Size of n_poly_polyun_stack_struct"]
52 [::std::mem::size_of::<n_poly_polyun_stack_struct>() - 48usize];
53 ["Alignment of n_poly_polyun_stack_struct"]
54 [::std::mem::align_of::<n_poly_polyun_stack_struct>() - 8usize];
55 ["Offset of field: n_poly_polyun_stack_struct::poly_stack"]
56 [::std::mem::offset_of!(n_poly_polyun_stack_struct, poly_stack) - 0usize];
57 ["Offset of field: n_poly_polyun_stack_struct::polyun_stack"]
58 [::std::mem::offset_of!(n_poly_polyun_stack_struct, polyun_stack) - 24usize];
59};
60impl Default for n_poly_polyun_stack_struct {
61 fn default() -> Self {
62 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
63 unsafe {
64 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
65 s.assume_init()
66 }
67 }
68}
69pub type n_poly_polyun_stack_t = [n_poly_polyun_stack_struct; 1usize];
70extern "C" {
71 #[link_name = "n_poly_init__extern"]
72 pub fn n_poly_init(A: *mut n_poly_struct);
73 #[link_name = "n_poly_init2__extern"]
74 pub fn n_poly_init2(A: *mut n_poly_struct, alloc: slong);
75 #[link_name = "n_poly_clear__extern"]
76 pub fn n_poly_clear(A: *mut n_poly_struct);
77 pub fn n_poly_realloc(A: *mut n_poly_struct, len: slong);
78 pub fn n_poly_is_canonical(A: *const n_poly_struct) -> libc::c_int;
79 #[link_name = "n_poly_swap__extern"]
80 pub fn n_poly_swap(A: *mut n_poly_struct, B: *mut n_poly_struct);
81 #[link_name = "n_poly_degree__extern"]
82 pub fn n_poly_degree(A: *const n_poly_struct) -> slong;
83 #[link_name = "n_poly_fit_length__extern"]
84 pub fn n_poly_fit_length(A: *mut n_poly_struct, len: slong);
85 #[link_name = "_n_poly_normalise__extern"]
86 pub fn _n_poly_normalise(A: *mut n_poly_struct);
87 #[link_name = "n_poly_truncate__extern"]
88 pub fn n_poly_truncate(poly: *mut n_poly_struct, len: slong);
89 pub fn n_poly_reverse(output: *mut n_poly_struct, input: *const n_poly_struct, m: slong);
90 #[link_name = "n_poly_lead__extern"]
91 pub fn n_poly_lead(A: *const n_poly_struct) -> ulong;
92 #[link_name = "n_poly_zero__extern"]
93 pub fn n_poly_zero(res: *mut n_poly_struct);
94 #[link_name = "n_poly_one__extern"]
95 pub fn n_poly_one(A: *mut n_poly_struct);
96 #[link_name = "n_poly_set_ui__extern"]
97 pub fn n_poly_set_ui(A: *mut n_poly_struct, c: ulong);
98 #[link_name = "n_poly_set__extern"]
99 pub fn n_poly_set(A: *mut n_poly_struct, B: *const n_poly_struct);
100 #[link_name = "n_poly_is_zero__extern"]
101 pub fn n_poly_is_zero(poly: *const n_poly_struct) -> libc::c_int;
102 #[link_name = "n_poly_is_one__extern"]
103 pub fn n_poly_is_one(A: *const n_poly_struct) -> libc::c_int;
104 #[link_name = "n_poly_equal__extern"]
105 pub fn n_poly_equal(a: *const n_poly_struct, b: *const n_poly_struct) -> libc::c_int;
106 #[link_name = "nmod_poly_mock__extern"]
107 pub fn nmod_poly_mock(a: *mut nmod_poly_struct, b: *const n_poly_struct, mod_: nmod_t);
108 #[link_name = "n_poly_mock__extern"]
109 pub fn n_poly_mock(a: *mut n_poly_struct, b: *const nmod_poly_struct);
110 #[link_name = "n_poly_get_coeff__extern"]
111 pub fn n_poly_get_coeff(poly: *const n_poly_struct, j: slong) -> ulong;
112 #[link_name = "n_poly_set_coeff_nonzero__extern"]
113 pub fn n_poly_set_coeff_nonzero(A: *mut n_poly_struct, j: slong, c: ulong);
114 pub fn n_poly_set_coeff(A: *mut n_poly_struct, e: slong, c: ulong);
115 #[link_name = "n_poly_set_nmod_poly__extern"]
116 pub fn n_poly_set_nmod_poly(a: *mut n_poly_struct, b: *const nmod_poly_struct);
117 #[link_name = "nmod_poly_set_n_poly__extern"]
118 pub fn nmod_poly_set_n_poly(a: *mut nmod_poly_struct, b: *const n_poly_struct);
119 #[link_name = "n_poly_shift_left__extern"]
120 pub fn n_poly_shift_left(A: *mut n_poly_struct, B: *const n_poly_struct, k: slong);
121 #[link_name = "n_poly_shift_right__extern"]
122 pub fn n_poly_shift_right(res: *mut n_poly_struct, poly: *const n_poly_struct, k: slong);
123 pub fn _n_poly_eval_pow(
124 P: *mut n_poly_struct,
125 alphapow: *mut n_poly_struct,
126 params: dot_params_t,
127 ctx: nmod_t,
128 ) -> ulong;
129 pub fn n_poly_print_pretty(A: *const n_poly_struct, x: *const libc::c_char);
130 pub fn n_poly_mod_is_canonical(A: *const n_poly_struct, mod_: nmod_t) -> libc::c_int;
131 pub fn n_poly_mod_set_coeff_ui(A: *mut n_poly_struct, j: slong, c: ulong, mod_: nmod_t);
132 #[link_name = "n_poly_mod_make_monic__extern"]
133 pub fn n_poly_mod_make_monic(A: *mut n_poly_struct, B: *const n_poly_struct, mod_: nmod_t);
134 #[link_name = "n_poly_mod_taylor_shift__extern"]
135 pub fn n_poly_mod_taylor_shift(g: *mut n_poly_struct, c: ulong, mod_: nmod_t);
136 #[link_name = "_n_poly_mod_scalar_mul_nmod__extern"]
137 pub fn _n_poly_mod_scalar_mul_nmod(
138 A: *mut n_poly_struct,
139 B: *const n_poly_struct,
140 c: ulong,
141 mod_: nmod_t,
142 );
143 #[link_name = "_n_poly_mod_scalar_mul_nmod_inplace__extern"]
144 pub fn _n_poly_mod_scalar_mul_nmod_inplace(A: *mut n_poly_struct, c: ulong, mod_: nmod_t);
145 pub fn n_poly_mod_scalar_mul_ui(
146 A: *mut n_poly_struct,
147 B: *const n_poly_struct,
148 c: ulong,
149 ctx: nmod_t,
150 );
151 pub fn n_poly_mod_eval_step2(
152 Acur: *mut n_poly_struct,
153 Ainc: *const n_poly_struct,
154 mod_: nmod_t,
155 ) -> ulong;
156 #[link_name = "n_poly_mod_evaluate_nmod__extern"]
157 pub fn n_poly_mod_evaluate_nmod(A: *const n_poly_struct, c: ulong, mod_: nmod_t) -> ulong;
158 #[link_name = "n_poly_mod_neg__extern"]
159 pub fn n_poly_mod_neg(A: *mut n_poly_struct, B: *const n_poly_struct, mod_: nmod_t);
160 pub fn n_poly_mod_add_ui(
161 res: *mut n_poly_struct,
162 poly: *const n_poly_struct,
163 c: ulong,
164 ctx: nmod_t,
165 );
166 #[link_name = "n_poly_mod_add__extern"]
167 pub fn n_poly_mod_add(
168 A: *mut n_poly_struct,
169 B: *const n_poly_struct,
170 C: *const n_poly_struct,
171 mod_: nmod_t,
172 );
173 #[link_name = "n_poly_mod_sub__extern"]
174 pub fn n_poly_mod_sub(
175 A: *mut n_poly_struct,
176 B: *const n_poly_struct,
177 C: *const n_poly_struct,
178 mod_: nmod_t,
179 );
180 #[link_name = "n_poly_mod_product_roots_nmod_vec__extern"]
181 pub fn n_poly_mod_product_roots_nmod_vec(
182 A: *mut n_poly_struct,
183 r: nn_srcptr,
184 n: slong,
185 mod_: nmod_t,
186 );
187 pub fn n_poly_mod_shift_left_scalar_addmul(
188 A: *mut n_poly_struct,
189 k: slong,
190 c: ulong,
191 mod_: nmod_t,
192 );
193 pub fn n_poly_mod_addmul_linear(
194 A: *mut n_poly_struct,
195 B: *const n_poly_struct,
196 C: *const n_poly_struct,
197 d1: ulong,
198 d0: ulong,
199 mod_: nmod_t,
200 );
201 pub fn n_poly_mod_scalar_addmul_nmod(
202 A: *mut n_poly_struct,
203 B: *const n_poly_struct,
204 C: *const n_poly_struct,
205 d0: ulong,
206 ctx: nmod_t,
207 );
208 pub fn n_poly_mod_eval_pow(
209 P: *mut n_poly_struct,
210 alphapow: *mut n_poly_struct,
211 ctx: nmod_t,
212 ) -> ulong;
213 pub fn n_poly_mod_eval2_pow(
214 vp: *mut ulong,
215 vm: *mut ulong,
216 P: *const n_poly_struct,
217 alphapow: *mut n_poly_struct,
218 ctx: nmod_t,
219 );
220 pub fn n_poly_mod_div_root(
221 Q: *mut n_poly_struct,
222 A: *const n_poly_struct,
223 c: ulong,
224 ctx: nmod_t,
225 ) -> ulong;
226 #[link_name = "_n_poly_mod_mul__extern"]
227 pub fn _n_poly_mod_mul(
228 A: *mut n_poly_struct,
229 B: *const n_poly_struct,
230 C: *const n_poly_struct,
231 ctx: nmod_t,
232 );
233 pub fn n_poly_mod_mul(
234 A: *mut n_poly_struct,
235 B: *const n_poly_struct,
236 C: *const n_poly_struct,
237 mod_: nmod_t,
238 );
239 pub fn n_poly_mod_mullow(
240 A: *mut n_poly_struct,
241 B: *const n_poly_struct,
242 C: *const n_poly_struct,
243 n: slong,
244 mod_: nmod_t,
245 );
246 #[link_name = "_n_poly_mod_div__extern"]
247 pub fn _n_poly_mod_div(
248 Q: *mut n_poly_struct,
249 A: *const n_poly_struct,
250 B: *const n_poly_struct,
251 mod_: nmod_t,
252 );
253 pub fn n_poly_mod_div(
254 Q: *mut n_poly_struct,
255 A: *const n_poly_struct,
256 B: *const n_poly_struct,
257 mod_: nmod_t,
258 );
259 #[link_name = "_n_poly_mod_rem__extern"]
260 pub fn _n_poly_mod_rem(
261 R: *mut n_poly_struct,
262 A: *const n_poly_struct,
263 B: *const n_poly_struct,
264 mod_: nmod_t,
265 );
266 pub fn n_poly_mod_rem(
267 R: *mut n_poly_struct,
268 A: *const n_poly_struct,
269 B: *const n_poly_struct,
270 mod_: nmod_t,
271 );
272 #[link_name = "_n_poly_mod_divrem__extern"]
273 pub fn _n_poly_mod_divrem(
274 Q: *mut n_poly_struct,
275 R: *mut n_poly_struct,
276 A: *const n_poly_struct,
277 B: *const n_poly_struct,
278 mod_: nmod_t,
279 );
280 pub fn n_poly_mod_divrem(
281 Q: *mut n_poly_struct,
282 R: *mut n_poly_struct,
283 A: *const n_poly_struct,
284 B: *const n_poly_struct,
285 mod_: nmod_t,
286 );
287 #[link_name = "_n_poly_mod_divexact__extern"]
288 pub fn _n_poly_mod_divexact(
289 Q: *mut n_poly_struct,
290 A: *const n_poly_struct,
291 B: *const n_poly_struct,
292 mod_: nmod_t,
293 );
294 pub fn n_poly_mod_divexact(
295 Q: *mut n_poly_struct,
296 A: *const n_poly_struct,
297 B: *const n_poly_struct,
298 mod_: nmod_t,
299 );
300 pub fn n_poly_mod_pow(
301 res: *mut n_poly_struct,
302 poly: *const n_poly_struct,
303 e: ulong,
304 ctx: nmod_t,
305 );
306 pub fn n_poly_mod_remove(f: *mut n_poly_struct, p: *const n_poly_struct, ctx: nmod_t) -> ulong;
307 pub fn n_poly_mod_mulmod_preinv(
308 A: *mut n_poly_struct,
309 B: *const n_poly_struct,
310 C: *const n_poly_struct,
311 M: *const n_poly_struct,
312 Minv: *const n_poly_struct,
313 ctx: nmod_t,
314 );
315 pub fn n_poly_mod_mulmod(
316 res: *mut n_poly_struct,
317 poly1: *const n_poly_struct,
318 poly2: *const n_poly_struct,
319 f: *const n_poly_struct,
320 mod_: nmod_t,
321 );
322 pub fn n_poly_mod_invmod(
323 A: *mut n_poly_struct,
324 B: *const n_poly_struct,
325 P: *const n_poly_struct,
326 mod_: nmod_t,
327 ) -> libc::c_int;
328 pub fn n_poly_mod_gcd(
329 G: *mut n_poly_struct,
330 A: *const n_poly_struct,
331 B: *const n_poly_struct,
332 mod_: nmod_t,
333 );
334 pub fn n_poly_mod_xgcd(
335 G: *mut n_poly_struct,
336 S: *mut n_poly_struct,
337 T: *mut n_poly_struct,
338 A: *const n_poly_struct,
339 B: *const n_poly_struct,
340 mod_: nmod_t,
341 );
342 pub fn n_poly_mod_inv_series(
343 Qinv: *mut n_poly_struct,
344 Q: *const n_poly_struct,
345 n: slong,
346 mod_: nmod_t,
347 );
348 pub fn n_poly_mod_div_series(
349 Q: *mut n_poly_struct,
350 A: *const n_poly_struct,
351 B: *const n_poly_struct,
352 order: slong,
353 ctx: nmod_t,
354 );
355 #[link_name = "fq_nmod_ctx_mod__extern"]
356 pub fn fq_nmod_ctx_mod(ctx: *const fq_nmod_ctx_struct) -> nmod_t;
357 #[link_name = "_n_fq_is_zero__extern"]
358 pub fn _n_fq_is_zero(a: *const ulong, d: slong) -> libc::c_int;
359 #[link_name = "_n_fq_zero__extern"]
360 pub fn _n_fq_zero(a: *mut ulong, d: slong);
361 #[link_name = "_n_fq_is_one__extern"]
362 pub fn _n_fq_is_one(a: *const ulong, d: slong) -> libc::c_int;
363 #[link_name = "_n_fq_is_ui__extern"]
364 pub fn _n_fq_is_ui(a: *const ulong, d: slong) -> libc::c_int;
365 #[link_name = "n_fq_is_one__extern"]
366 pub fn n_fq_is_one(a: *const ulong, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
367 #[link_name = "_n_fq_one__extern"]
368 pub fn _n_fq_one(a: *mut ulong, d: slong);
369 #[link_name = "_n_fq_set_nmod__extern"]
370 pub fn _n_fq_set_nmod(a: *mut ulong, b: ulong, d: slong);
371 pub fn n_fq_gen(a: *mut ulong, ctx: *const fq_nmod_ctx_struct);
372 #[link_name = "_n_fq_set__extern"]
373 pub fn _n_fq_set(a: *mut ulong, b: *const ulong, d: slong);
374 #[link_name = "_n_fq_swap__extern"]
375 pub fn _n_fq_swap(a: *mut ulong, b: *mut ulong, d: slong);
376 #[link_name = "_n_fq_equal__extern"]
377 pub fn _n_fq_equal(a: *mut ulong, b: *const ulong, d: slong) -> libc::c_int;
378 pub fn n_fq_equal_fq_nmod(
379 a: *const ulong,
380 b: *const nmod_poly_struct,
381 ctx: *const fq_nmod_ctx_struct,
382 ) -> libc::c_int;
383 pub fn n_fq_is_canonical(a: *const ulong, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
384 pub fn n_fq_randtest_not_zero(
385 a: *mut ulong,
386 state: *mut flint_rand_struct,
387 ctx: *const fq_nmod_ctx_struct,
388 );
389 pub fn n_fq_get_str_pretty(
390 a: *const ulong,
391 ctx: *const fq_nmod_ctx_struct,
392 ) -> *mut libc::c_char;
393 pub fn n_fq_fprint_pretty(
394 file: *mut FILE,
395 a: *const ulong,
396 ctx: *const fq_nmod_ctx_struct,
397 ) -> libc::c_int;
398 pub fn n_fq_print_pretty(a: *const ulong, ctx: *const fq_nmod_ctx_struct);
399 pub fn n_fq_get_n_poly(a: *mut n_poly_struct, b: *const ulong, ctx: *const fq_nmod_ctx_struct);
400 pub fn n_fq_get_fq_nmod(
401 a: *mut nmod_poly_struct,
402 b: *const ulong,
403 ctx: *const fq_nmod_ctx_struct,
404 );
405 pub fn _n_fq_set_n_poly(
406 a: *mut ulong,
407 bcoeffs: *const ulong,
408 blen: slong,
409 ctx: *const fq_nmod_ctx_struct,
410 );
411 pub fn n_fq_set_fq_nmod(
412 a: *mut ulong,
413 b: *const nmod_poly_struct,
414 ctx: *const fq_nmod_ctx_struct,
415 );
416 #[link_name = "_n_fq_neg__extern"]
417 pub fn _n_fq_neg(a: *mut ulong, b: *const ulong, d: slong, mod_: nmod_t);
418 #[link_name = "_n_fq_add__extern"]
419 pub fn _n_fq_add(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong, mod_: nmod_t);
420 pub fn n_fq_add_si(a: *mut ulong, b: *const ulong, c: slong, ctx: *const fq_nmod_ctx_struct);
421 pub fn n_fq_add_fq_nmod(
422 a: *mut ulong,
423 b: *const ulong,
424 c: *const nmod_poly_struct,
425 ctx: *const fq_nmod_ctx_struct,
426 );
427 #[link_name = "n_fq_add__extern"]
428 pub fn n_fq_add(
429 a: *mut ulong,
430 b: *const ulong,
431 c: *const ulong,
432 ctx: *const fq_nmod_ctx_struct,
433 );
434 #[link_name = "_n_fq_sub__extern"]
435 pub fn _n_fq_sub(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong, mod_: nmod_t);
436 pub fn n_fq_sub_fq_nmod(
437 a: *mut ulong,
438 b: *const ulong,
439 c: *const nmod_poly_struct,
440 ctx: *const fq_nmod_ctx_struct,
441 );
442 #[link_name = "n_fq_sub__extern"]
443 pub fn n_fq_sub(
444 a: *mut ulong,
445 b: *const ulong,
446 c: *const ulong,
447 ctx: *const fq_nmod_ctx_struct,
448 );
449 pub fn _n_fq_mul_ui(a: *mut ulong, b: *const ulong, c: ulong, d: slong, mod_: nmod_t);
450 pub fn _n_fq_madd2(
451 a: *mut ulong,
452 b: *const ulong,
453 c: *const ulong,
454 ctx: *const fq_nmod_ctx_struct,
455 t: *mut ulong,
456 );
457 pub fn _n_fq_mul2(
458 t: *mut ulong,
459 b: *const ulong,
460 c: *const ulong,
461 ctx: *const fq_nmod_ctx_struct,
462 );
463 pub fn _n_fq_reduce(
464 a: *mut ulong,
465 b: *mut ulong,
466 blen: slong,
467 ctx: *const fq_nmod_ctx_struct,
468 t: *mut ulong,
469 );
470 #[link_name = "_n_fq_reduce2__extern"]
471 pub fn _n_fq_reduce2(
472 a: *mut ulong,
473 b: *mut ulong,
474 ctx: *const fq_nmod_ctx_struct,
475 t: *mut ulong,
476 );
477 #[link_name = "_n_fq_mul__extern"]
478 pub fn _n_fq_mul(
479 a: *mut ulong,
480 b: *const ulong,
481 c: *const ulong,
482 ctx: *const fq_nmod_ctx_struct,
483 t: *mut ulong,
484 );
485 #[link_name = "_n_fq_addmul__extern"]
486 pub fn _n_fq_addmul(
487 a: *mut ulong,
488 b: *const ulong,
489 c: *const ulong,
490 e: *const ulong,
491 ctx: *const fq_nmod_ctx_struct,
492 t: *mut ulong,
493 );
494 pub fn _n_fq_dot_lazy_size(len: slong, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
495 pub fn _n_fq_madd2_lazy1(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
496 pub fn _n_fq_mul2_lazy1(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
497 pub fn _n_fq_reduce2_lazy1(a: *mut ulong, d: slong, ctx: nmod_t);
498 pub fn _n_fq_madd2_lazy2(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
499 pub fn _n_fq_mul2_lazy2(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
500 pub fn _n_fq_reduce2_lazy2(a: *mut ulong, d: slong, ctx: nmod_t);
501 pub fn _n_fq_madd2_lazy3(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
502 pub fn _n_fq_mul2_lazy3(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
503 pub fn _n_fq_reduce2_lazy3(a: *mut ulong, d: slong, ctx: nmod_t);
504 pub fn _n_fq_inv(a: *mut ulong, b: *const ulong, ctx: *const fq_nmod_ctx_struct, t: *mut ulong);
505 pub fn n_fq_inv(a: *mut ulong, b: *const ulong, ctx: *const fq_nmod_ctx_struct);
506 pub fn n_fq_mul(
507 a: *mut ulong,
508 b: *const ulong,
509 c: *const ulong,
510 ctx: *const fq_nmod_ctx_struct,
511 );
512 pub fn n_fq_mul_fq_nmod(
513 a: *mut ulong,
514 b: *const ulong,
515 c: *const nmod_poly_struct,
516 ctx: *const fq_nmod_ctx_struct,
517 );
518 pub fn n_fq_addmul(
519 a: *mut ulong,
520 b: *const ulong,
521 c: *const ulong,
522 d: *const ulong,
523 ctx: *const fq_nmod_ctx_struct,
524 );
525 pub fn _n_fq_pow_ui(a: *mut ulong, b: *const ulong, e: ulong, ctx: *const fq_nmod_ctx_struct);
526 pub fn n_fq_pow_ui(a: *mut ulong, b: *const ulong, e: ulong, ctx: *const fq_nmod_ctx_struct);
527 pub fn n_fq_pow_fmpz(
528 a: *mut ulong,
529 b: *const ulong,
530 e: *const fmpz,
531 ctx: *const fq_nmod_ctx_struct,
532 );
533 pub fn n_fq_poly_init2(A: *mut n_poly_struct, alloc: slong, ctx: *const fq_nmod_ctx_struct);
534 pub fn n_fq_poly_is_canonical(
535 a: *const n_poly_struct,
536 ctx: *const fq_nmod_ctx_struct,
537 ) -> libc::c_int;
538 pub fn _n_fq_poly_one(A: *mut n_poly_struct, d: slong);
539 #[link_name = "n_fq_poly_one__extern"]
540 pub fn n_fq_poly_one(A: *mut n_poly_struct, ctx: *const fq_nmod_ctx_struct);
541 pub fn n_fq_poly_is_one(A: *mut n_poly_struct, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
542 pub fn n_fq_poly_equal(
543 A: *const n_poly_struct,
544 B: *const n_poly_struct,
545 ctx: *const fq_nmod_ctx_struct,
546 ) -> libc::c_int;
547 #[link_name = "_n_fq_poly_normalise__extern"]
548 pub fn _n_fq_poly_normalise(A: *mut n_poly_struct, d: slong);
549 pub fn n_fq_poly_print_pretty(
550 A: *const n_poly_struct,
551 x: *const libc::c_char,
552 ctx: *const fq_nmod_ctx_struct,
553 );
554 pub fn n_fq_poly_set(
555 A: *mut n_poly_struct,
556 B: *const n_poly_struct,
557 ctx: *const fq_nmod_ctx_struct,
558 );
559 pub fn n_fq_poly_randtest(
560 A: *mut n_poly_struct,
561 state: *mut flint_rand_struct,
562 len: slong,
563 ctx: *const fq_nmod_ctx_struct,
564 );
565 pub fn n_fq_poly_make_monic(
566 A: *mut n_poly_struct,
567 B: *const n_poly_struct,
568 ctx: *const fq_nmod_ctx_struct,
569 );
570 pub fn n_fq_poly_get_coeff_n_fq(
571 c: *mut ulong,
572 A: *const n_poly_struct,
573 e: slong,
574 ctx: *const fq_nmod_ctx_struct,
575 );
576 pub fn n_fq_poly_get_coeff_fq_nmod(
577 c: *mut nmod_poly_struct,
578 A: *const n_poly_struct,
579 e: slong,
580 ctx: *const fq_nmod_ctx_struct,
581 );
582 pub fn n_fq_poly_set_coeff_fq_nmod(
583 A: *mut n_poly_struct,
584 j: slong,
585 c: *const nmod_poly_struct,
586 ctx: *const fq_nmod_ctx_struct,
587 );
588 pub fn n_fq_poly_set_coeff_n_fq(
589 A: *mut n_poly_struct,
590 j: slong,
591 c: *const ulong,
592 ctx: *const fq_nmod_ctx_struct,
593 );
594 pub fn n_fq_poly_scalar_mul_ui(
595 A: *mut n_poly_struct,
596 B: *const n_poly_struct,
597 c: ulong,
598 ctx: *const fq_nmod_ctx_struct,
599 );
600 pub fn n_fq_poly_scalar_mul_n_fq(
601 A: *mut n_poly_struct,
602 B: *const n_poly_struct,
603 c: *const ulong,
604 ctx: *const fq_nmod_ctx_struct,
605 );
606 pub fn n_fq_poly_scalar_addmul_n_fq(
607 A: *mut n_poly_struct,
608 B: *const n_poly_struct,
609 C: *const n_poly_struct,
610 d: *const ulong,
611 ctx: *const fq_nmod_ctx_struct,
612 );
613 pub fn n_fq_poly_shift_left_scalar_submul(
614 A: *mut n_poly_struct,
615 k: slong,
616 c: *const ulong,
617 ctx: *const fq_nmod_ctx_struct,
618 );
619 pub fn n_fq_poly_evaluate_fq_nmod(
620 e: *mut nmod_poly_struct,
621 A: *const n_poly_struct,
622 c: *const nmod_poly_struct,
623 ctx: *const fq_nmod_ctx_struct,
624 );
625 pub fn n_fq_poly_evaluate_n_fq(
626 e: *mut ulong,
627 A: *const n_poly_struct,
628 c: *const ulong,
629 ctx: *const fq_nmod_ctx_struct,
630 );
631 pub fn n_fq_poly_get_fq_nmod_poly(
632 A: *mut fq_nmod_poly_struct,
633 B: *const n_poly_struct,
634 ctx: *const fq_nmod_ctx_struct,
635 );
636 pub fn n_fq_poly_set_n_fq(
637 A: *mut n_poly_struct,
638 c: *const ulong,
639 ctx: *const fq_nmod_ctx_struct,
640 );
641 pub fn n_fq_poly_set_fq_nmod(
642 A: *mut n_poly_struct,
643 c: *const nmod_poly_struct,
644 ctx: *const fq_nmod_ctx_struct,
645 );
646 pub fn n_fq_poly_set_fq_nmod_poly(
647 A: *mut n_poly_struct,
648 B: *const fq_nmod_poly_struct,
649 ctx: *const fq_nmod_ctx_struct,
650 );
651 pub fn n_fq_poly_shift_left(
652 A: *mut n_poly_struct,
653 B: *const n_poly_struct,
654 n: slong,
655 ctx: *const fq_nmod_ctx_struct,
656 );
657 pub fn n_fq_poly_shift_right(
658 A: *mut n_poly_struct,
659 B: *const n_poly_struct,
660 n: slong,
661 ctx: *const fq_nmod_ctx_struct,
662 );
663 pub fn n_fq_poly_truncate(A: *mut n_poly_struct, len: slong, ctx: *const fq_nmod_ctx_struct);
664 pub fn n_fq_poly_neg(
665 A: *mut n_poly_struct,
666 B: *const n_poly_struct,
667 ctx: *const fq_nmod_ctx_struct,
668 );
669 pub fn n_fq_poly_add(
670 A: *mut n_poly_struct,
671 B: *const n_poly_struct,
672 C: *const n_poly_struct,
673 ctx: *const fq_nmod_ctx_struct,
674 );
675 pub fn n_fq_poly_sub(
676 A: *mut n_poly_struct,
677 B: *const n_poly_struct,
678 C: *const n_poly_struct,
679 ctx: *const fq_nmod_ctx_struct,
680 );
681 pub fn n_fq_poly_add_si(
682 A: *mut n_poly_struct,
683 B: *const n_poly_struct,
684 c: slong,
685 ctx: *const fq_nmod_ctx_struct,
686 );
687 pub fn _n_fq_poly_mul_(
688 A: *mut ulong,
689 B: *const ulong,
690 Blen: slong,
691 C: *const ulong,
692 Clen: slong,
693 ctx: *const fq_nmod_ctx_struct,
694 St: *mut n_poly_stack_struct,
695 );
696 pub fn n_fq_poly_mul_(
697 A: *mut n_poly_struct,
698 B: *const n_poly_struct,
699 C: *const n_poly_struct,
700 ctx: *const fq_nmod_ctx_struct,
701 St: *mut n_poly_stack_struct,
702 );
703 pub fn n_fq_poly_mul(
704 A: *mut n_poly_struct,
705 B: *const n_poly_struct,
706 C: *const n_poly_struct,
707 ctx: *const fq_nmod_ctx_struct,
708 );
709 pub fn n_fq_poly_pow(
710 A: *mut n_poly_struct,
711 B: *const n_poly_struct,
712 e: ulong,
713 ctx: *const fq_nmod_ctx_struct,
714 );
715 pub fn n_fq_poly_remove(
716 f: *mut n_poly_struct,
717 g: *const n_poly_struct,
718 ctx: *const fq_nmod_ctx_struct,
719 ) -> ulong;
720 pub fn _n_fq_poly_divrem_basecase_(
721 Q: *mut ulong,
722 A: *mut ulong,
723 AA: *const ulong,
724 Alen: slong,
725 B: *const ulong,
726 Blen: slong,
727 invB: *const ulong,
728 ctx: *const fq_nmod_ctx_struct,
729 St: *mut n_poly_stack_struct,
730 );
731 pub fn n_fq_poly_divrem_divconquer_(
732 Q: *mut n_poly_struct,
733 R: *mut n_poly_struct,
734 A: *const n_poly_struct,
735 B: *const n_poly_struct,
736 ctx: *const fq_nmod_ctx_struct,
737 St: *mut n_poly_stack_struct,
738 );
739 #[link_name = "n_fq_poly_divrem___extern"]
740 pub fn n_fq_poly_divrem_(
741 Q: *mut n_poly_struct,
742 R: *mut n_poly_struct,
743 A: *const n_poly_struct,
744 B: *const n_poly_struct,
745 ctx: *const fq_nmod_ctx_struct,
746 St: *mut n_poly_stack_struct,
747 );
748 pub fn n_fq_poly_divrem(
749 Q: *mut n_poly_struct,
750 R: *mut n_poly_struct,
751 A: *const n_poly_struct,
752 B: *const n_poly_struct,
753 ctx: *const fq_nmod_ctx_struct,
754 );
755 pub fn n_fq_poly_gcd_(
756 G: *mut n_poly_struct,
757 A: *const n_poly_struct,
758 B: *const n_poly_struct,
759 ctx: *const fq_nmod_ctx_struct,
760 St: *mut n_poly_stack_struct,
761 );
762 pub fn n_fq_poly_gcd(
763 G: *mut n_poly_struct,
764 A: *const n_poly_struct,
765 B: *const n_poly_struct,
766 ctx: *const fq_nmod_ctx_struct,
767 );
768 pub fn n_fq_poly_xgcd(
769 G: *mut n_poly_struct,
770 S: *mut n_poly_struct,
771 T: *mut n_poly_struct,
772 B: *const n_poly_struct,
773 C: *const n_poly_struct,
774 ctx: *const fq_nmod_ctx_struct,
775 );
776 pub fn n_fq_poly_mulmod(
777 A: *mut n_poly_struct,
778 B: *const n_poly_struct,
779 C: *const n_poly_struct,
780 M: *const n_poly_struct,
781 ctx: *const fq_nmod_ctx_struct,
782 );
783 pub fn _n_fq_poly_rem_basecase_(
784 Q: *mut ulong,
785 A: *mut ulong,
786 AA: *const ulong,
787 Alen: slong,
788 B: *const ulong,
789 Blen: slong,
790 invB: *const ulong,
791 ctx: *const fq_nmod_ctx_struct,
792 St: *mut n_poly_stack_struct,
793 );
794 pub fn n_fq_poly_rem(
795 R: *mut n_poly_struct,
796 A: *const n_poly_struct,
797 B: *const n_poly_struct,
798 ctx: *const fq_nmod_ctx_struct,
799 );
800 pub fn n_fq_poly_mullow(
801 A: *mut n_poly_struct,
802 B: *const n_poly_struct,
803 C: *const n_poly_struct,
804 order: slong,
805 ctx: *const fq_nmod_ctx_struct,
806 );
807 pub fn n_fq_poly_inv_series(
808 A: *mut n_poly_struct,
809 B: *const n_poly_struct,
810 order: slong,
811 ctx: *const fq_nmod_ctx_struct,
812 );
813 pub fn n_fq_poly_eval_pow(
814 ev: *mut ulong,
815 A: *const n_poly_struct,
816 alphapow: *mut n_poly_struct,
817 ctx: *const fq_nmod_ctx_struct,
818 );
819 pub fn n_fq_polyun_set(
820 A: *mut n_polyun_struct,
821 B: *const n_polyun_struct,
822 ctx: *const fq_nmod_ctx_struct,
823 );
824 #[link_name = "n_bpoly_init__extern"]
825 pub fn n_bpoly_init(A: *mut n_bpoly_struct);
826 pub fn n_bpoly_clear(A: *mut n_bpoly_struct);
827 pub fn n_bpoly_realloc(A: *mut n_bpoly_struct, len: slong);
828 #[link_name = "n_bpoly_fit_length__extern"]
829 pub fn n_bpoly_fit_length(A: *mut n_bpoly_struct, len: slong);
830 #[link_name = "n_bpoly_swap__extern"]
831 pub fn n_bpoly_swap(A: *mut n_bpoly_struct, B: *mut n_bpoly_struct);
832 pub fn n_bpoly_print_pretty(
833 A: *const n_bpoly_struct,
834 xvar: *const libc::c_char,
835 yvar: *const libc::c_char,
836 );
837 #[link_name = "n_bpoly_normalise__extern"]
838 pub fn n_bpoly_normalise(A: *mut n_bpoly_struct);
839 #[link_name = "n_bpoly_zero__extern"]
840 pub fn n_bpoly_zero(A: *mut n_bpoly_struct);
841 pub fn n_bpoly_one(A: *mut n_bpoly_struct);
842 pub fn _n_bpoly_set(A: *mut n_bpoly_struct, B: *const n_bpoly_struct);
843 #[link_name = "n_bpoly_set__extern"]
844 pub fn n_bpoly_set(A: *mut n_bpoly_struct, B: *const n_bpoly_struct);
845 #[link_name = "n_bpoly_is_zero__extern"]
846 pub fn n_bpoly_is_zero(A: *const n_bpoly_struct) -> libc::c_int;
847 pub fn n_bpoly_equal(A: *const n_bpoly_struct, B: *const n_bpoly_struct) -> libc::c_int;
848 pub fn n_bpoly_set_coeff(A: *mut n_bpoly_struct, e0: slong, e1: slong, c: ulong);
849 pub fn n_bpoly_set_coeff_nonzero(A: *mut n_bpoly_struct, e0: slong, e1: slong, c: ulong);
850 pub fn n_bpoly_mod_derivative_gen0(
851 A: *mut n_bpoly_struct,
852 B: *const n_bpoly_struct,
853 ctx: nmod_t,
854 );
855 #[link_name = "n_bpoly_get_coeff__extern"]
856 pub fn n_bpoly_get_coeff(A: *const n_bpoly_struct, e0: slong, e1: slong) -> ulong;
857 #[link_name = "n_bpoly_degree0__extern"]
858 pub fn n_bpoly_degree0(A: *const n_bpoly_struct) -> slong;
859 pub fn n_bpoly_degree1(A: *const n_bpoly_struct) -> slong;
860 pub fn n_bpoly_set_poly_gen0(A: *mut n_bpoly_struct, B: *const n_poly_struct);
861 pub fn n_bpoly_set_poly_gen1(A: *mut n_bpoly_struct, B: *const n_poly_struct);
862 pub fn n_bpoly_mod_is_canonical(A: *const n_bpoly_struct, mod_: nmod_t) -> libc::c_int;
863 #[link_name = "n_bpoly_bidegree__extern"]
864 pub fn n_bpoly_bidegree(A: *const n_bpoly_struct) -> ulong;
865 pub fn n_bpoly_scalar_mul_nmod(A: *mut n_bpoly_struct, c: ulong, ctx: nmod_t);
866 pub fn n_bpoly_mod_content_last(g: *mut n_poly_struct, A: *const n_bpoly_struct, ctx: nmod_t);
867 pub fn n_bpoly_mod_divexact_last(A: *mut n_bpoly_struct, b: *const n_poly_struct, ctx: nmod_t);
868 pub fn n_bpoly_mod_mul_last(A: *mut n_bpoly_struct, b: *const n_poly_struct, ctx: nmod_t);
869 pub fn n_bpoly_mod_taylor_shift_gen0(A: *mut n_bpoly_struct, c: ulong, ctx: nmod_t);
870 pub fn n_bpoly_mod_taylor_shift_gen1(
871 A: *mut n_bpoly_struct,
872 B: *const n_bpoly_struct,
873 c: ulong,
874 ctx: nmod_t,
875 );
876 pub fn n_bpoly_mod_add(
877 A: *mut n_bpoly_struct,
878 B: *const n_bpoly_struct,
879 C: *const n_bpoly_struct,
880 ctx: nmod_t,
881 );
882 pub fn n_bpoly_mod_sub(
883 A: *mut n_bpoly_struct,
884 B: *const n_bpoly_struct,
885 C: *const n_bpoly_struct,
886 ctx: nmod_t,
887 );
888 pub fn n_bpoly_mod_mul(
889 A: *mut n_bpoly_struct,
890 B: *const n_bpoly_struct,
891 C: *const n_bpoly_struct,
892 ctx: nmod_t,
893 );
894 pub fn n_bpoly_mod_divides(
895 Q: *mut n_bpoly_struct,
896 A: *const n_bpoly_struct,
897 B: *const n_bpoly_struct,
898 ctx: nmod_t,
899 ) -> libc::c_int;
900 pub fn n_bpoly_mod_make_primitive(g: *mut n_poly_struct, A: *mut n_bpoly_struct, ctx: nmod_t);
901 pub fn n_bpoly_mod_mul_series(
902 A: *mut n_bpoly_struct,
903 B: *const n_bpoly_struct,
904 C: *const n_bpoly_struct,
905 order: slong,
906 ctx: nmod_t,
907 );
908 pub fn n_bpoly_mod_divrem_series(
909 Q: *mut n_bpoly_struct,
910 R: *mut n_bpoly_struct,
911 A: *const n_bpoly_struct,
912 B: *const n_bpoly_struct,
913 order: slong,
914 ctx: nmod_t,
915 );
916 pub fn n_bpoly_mod_interp_reduce_2sm_poly(
917 Ap: *mut n_poly_struct,
918 Am: *mut n_poly_struct,
919 A: *const n_bpoly_struct,
920 alphapow: *mut n_poly_struct,
921 mod_: nmod_t,
922 );
923 pub fn n_bpoly_mod_interp_lift_2sm_poly(
924 deg1: *mut slong,
925 T: *mut n_bpoly_struct,
926 A: *const n_poly_struct,
927 B: *const n_poly_struct,
928 alpha: ulong,
929 mod_: nmod_t,
930 );
931 pub fn n_bpoly_mod_interp_crt_2sm_poly(
932 deg1: *mut slong,
933 F: *mut n_bpoly_struct,
934 T: *mut n_bpoly_struct,
935 A: *mut n_poly_struct,
936 B: *mut n_poly_struct,
937 modulus: *const n_poly_struct,
938 alphapow: *mut n_poly_struct,
939 mod_: nmod_t,
940 ) -> libc::c_int;
941 pub fn n_bpoly_mod_gcd_brown_smprime(
942 G: *mut n_bpoly_struct,
943 Abar: *mut n_bpoly_struct,
944 Bbar: *mut n_bpoly_struct,
945 A: *mut n_bpoly_struct,
946 B: *mut n_bpoly_struct,
947 ctx: nmod_t,
948 Sp: *mut n_poly_bpoly_stack_struct,
949 ) -> libc::c_int;
950 pub fn n_fq_bpoly_is_canonical(
951 A: *const n_bpoly_struct,
952 ctx: *const fq_nmod_ctx_struct,
953 ) -> libc::c_int;
954 pub fn n_fq_bpoly_one(A: *mut n_bpoly_struct, ctx: *const fq_nmod_ctx_struct);
955 pub fn n_fq_bpoly_set(
956 A: *mut n_bpoly_struct,
957 B: *const n_bpoly_struct,
958 ctx: *const fq_nmod_ctx_struct,
959 );
960 pub fn n_fq_bpoly_equal(
961 A: *const n_bpoly_struct,
962 B: *const n_bpoly_struct,
963 ctx: *const fq_nmod_ctx_struct,
964 ) -> libc::c_int;
965 pub fn n_fq_bpoly_get_coeff_n_fq(
966 c: *mut ulong,
967 A: *const n_bpoly_struct,
968 e0: slong,
969 e1: slong,
970 ctx: *const fq_nmod_ctx_struct,
971 );
972 pub fn n_fq_bpoly_get_coeff_fq_nmod(
973 c: *mut nmod_poly_struct,
974 A: *const n_bpoly_struct,
975 e0: slong,
976 e1: slong,
977 ctx: *const fq_nmod_ctx_struct,
978 );
979 pub fn n_fq_bpoly_set_coeff_n_fq(
980 A: *mut n_bpoly_struct,
981 e0: slong,
982 e1: slong,
983 c: *const ulong,
984 ctx: *const fq_nmod_ctx_struct,
985 );
986 pub fn n_fq_bpoly_set_fq_nmod_poly_gen0(
987 A: *mut n_bpoly_struct,
988 B: *const fq_nmod_poly_struct,
989 ctx: *const fq_nmod_ctx_struct,
990 );
991 pub fn n_fq_bpoly_set_n_fq_poly_gen0(
992 A: *mut n_bpoly_struct,
993 B: *const n_poly_struct,
994 ctx: *const fq_nmod_ctx_struct,
995 );
996 pub fn n_fq_bpoly_set_n_fq_poly_gen1(
997 A: *mut n_bpoly_struct,
998 B: *const n_poly_struct,
999 ctx: *const fq_nmod_ctx_struct,
1000 );
1001 pub fn n_fq_bpoly_derivative_gen0(
1002 A: *mut n_bpoly_struct,
1003 B: *const n_bpoly_struct,
1004 ctx: *const fq_nmod_ctx_struct,
1005 );
1006 pub fn n_fq_bpoly_scalar_mul_n_fq(
1007 A: *mut n_bpoly_struct,
1008 c: *const ulong,
1009 ctx: *const fq_nmod_ctx_struct,
1010 );
1011 pub fn n_fq_bpoly_taylor_shift_gen0_fq_nmod(
1012 A: *mut n_bpoly_struct,
1013 alpha: *const nmod_poly_struct,
1014 ctx: *const fq_nmod_ctx_struct,
1015 );
1016 pub fn n_fq_bpoly_taylor_shift_gen1_fq_nmod(
1017 A: *mut n_bpoly_struct,
1018 B: *const n_bpoly_struct,
1019 c_: *const nmod_poly_struct,
1020 ctx: *const fq_nmod_ctx_struct,
1021 );
1022 pub fn n_fq_bpoly_taylor_shift_gen0_n_fq(
1023 A: *mut n_bpoly_struct,
1024 alpha: *const ulong,
1025 ctx: *const fq_nmod_ctx_struct,
1026 );
1027 pub fn n_fq_bpoly_gcd_brown_smprime(
1028 G: *mut n_bpoly_struct,
1029 Abar: *mut n_bpoly_struct,
1030 Bbar: *mut n_bpoly_struct,
1031 A: *mut n_bpoly_struct,
1032 B: *mut n_bpoly_struct,
1033 ctx: *const fq_nmod_ctx_struct,
1034 Sp: *mut n_poly_bpoly_stack_struct,
1035 ) -> libc::c_int;
1036 pub fn n_fq_bpoly_print_pretty(
1037 A: *const n_bpoly_struct,
1038 xvar: *const libc::c_char,
1039 yvar: *const libc::c_char,
1040 ctx: *const fq_nmod_ctx_struct,
1041 );
1042 #[link_name = "n_tpoly_init__extern"]
1043 pub fn n_tpoly_init(A: *mut n_tpoly_struct);
1044 pub fn n_tpoly_clear(A: *mut n_tpoly_struct);
1045 pub fn n_tpoly_fit_length(A: *mut n_tpoly_struct, len: slong);
1046 #[link_name = "n_tpoly_swap__extern"]
1047 pub fn n_tpoly_swap(A: *mut n_tpoly_struct, B: *mut n_tpoly_struct);
1048 #[link_name = "n_polyu_init__extern"]
1049 pub fn n_polyu_init(A: *mut n_polyu_struct);
1050 pub fn n_polyu_clear(A: *mut n_polyu_struct);
1051 pub fn n_polyu_realloc(A: *mut n_polyu_struct, len: slong);
1052 #[link_name = "n_polyu_fit_length__extern"]
1053 pub fn n_polyu_fit_length(A: *mut n_polyu_struct, len: slong);
1054 #[link_name = "n_polyu_swap__extern"]
1055 pub fn n_polyu_swap(A: *mut n_polyu_struct, B: *mut n_polyu_struct);
1056 pub fn n_polyu3_print_pretty(
1057 A: *const n_polyu_struct,
1058 gen0: *const libc::c_char,
1059 gen1: *const libc::c_char,
1060 var2: *const libc::c_char,
1061 );
1062 pub fn n_polyu3_degrees(
1063 deg0: *mut slong,
1064 deg1: *mut slong,
1065 deg2: *mut slong,
1066 A: *const n_polyu_struct,
1067 );
1068 pub fn nmod_pow_cache_start(
1069 b: ulong,
1070 pos_direct: *mut n_poly_struct,
1071 pos_bin: *mut n_poly_struct,
1072 neg_direct: *mut n_poly_struct,
1073 );
1074 pub fn nmod_pow_cache_mulpow_ui(
1075 a: ulong,
1076 e: ulong,
1077 pos_direct: *mut n_poly_struct,
1078 pos_bin: *mut n_poly_struct,
1079 neg_direct: *mut n_poly_struct,
1080 ctx: nmod_t,
1081 ) -> ulong;
1082 pub fn nmod_pow_cache_mulpow_neg_ui(
1083 a: ulong,
1084 e: ulong,
1085 pos_direct: *mut n_poly_struct,
1086 pos_bin: *mut n_poly_struct,
1087 neg_direct: *mut n_poly_struct,
1088 ctx: nmod_t,
1089 ) -> ulong;
1090 pub fn nmod_pow_cache_mulpow_fmpz(
1091 a: ulong,
1092 e: *const fmpz,
1093 pos_direct: *mut n_poly_struct,
1094 pos_bin: *mut n_poly_struct,
1095 neg_direct: *mut n_poly_struct,
1096 ctx: nmod_t,
1097 ) -> ulong;
1098 pub fn n_fq_pow_cache_start_n_fq(
1099 b: *const ulong,
1100 pos_direct: *mut n_poly_struct,
1101 pos_bin: *mut n_poly_struct,
1102 neg_direct: *mut n_poly_struct,
1103 ctx: *const fq_nmod_ctx_struct,
1104 );
1105 pub fn n_fq_pow_cache_start_fq_nmod(
1106 b: *const nmod_poly_struct,
1107 pos_direct: *mut n_poly_struct,
1108 pos_bin: *mut n_poly_struct,
1109 neg_direct: *mut n_poly_struct,
1110 ctx: *const fq_nmod_ctx_struct,
1111 );
1112 pub fn n_fq_pow_cache_mulpow_ui(
1113 r: *mut ulong,
1114 a: *const ulong,
1115 e: ulong,
1116 pos_direct: *mut n_poly_struct,
1117 pos_bin: *mut n_poly_struct,
1118 neg_direct: *mut n_poly_struct,
1119 ctx: *const fq_nmod_ctx_struct,
1120 );
1121 pub fn n_fq_pow_cache_mulpow_neg_ui(
1122 r: *mut ulong,
1123 a: *const ulong,
1124 e: ulong,
1125 pos_direct: *mut n_poly_struct,
1126 pos_bin: *mut n_poly_struct,
1127 neg_direct: *mut n_poly_struct,
1128 ctx: *const fq_nmod_ctx_struct,
1129 );
1130 pub fn n_fq_pow_cache_mulpow_fmpz(
1131 r: *mut ulong,
1132 a: *const ulong,
1133 e: *const fmpz,
1134 pos_direct: *mut n_poly_struct,
1135 pos_bin: *mut n_poly_struct,
1136 neg_direct: *mut n_poly_struct,
1137 ctx: *const fq_nmod_ctx_struct,
1138 );
1139 pub fn nmod_eval_interp_init(E: *mut nmod_eval_interp_struct);
1140 pub fn nmod_eval_interp_clear(E: *mut nmod_eval_interp_struct);
1141 pub fn nmod_eval_interp_set_degree_modulus(
1142 E: *mut nmod_eval_interp_struct,
1143 deg: slong,
1144 ctx: nmod_t,
1145 ) -> libc::c_int;
1146 #[link_name = "nmod_eval_interp_eval_length__extern"]
1147 pub fn nmod_eval_interp_eval_length(E: *mut nmod_eval_interp_struct) -> slong;
1148 pub fn nmod_eval_interp_to_coeffs_poly(
1149 a: *mut n_poly_struct,
1150 v: *const n_poly_struct,
1151 E: *mut nmod_eval_interp_struct,
1152 ctx: nmod_t,
1153 );
1154 pub fn nmod_eval_interp_from_coeffs_poly(
1155 v: *mut n_poly_struct,
1156 a: *const n_poly_struct,
1157 E: *mut nmod_eval_interp_struct,
1158 ctx: nmod_t,
1159 );
1160 pub fn nmod_eval_interp_to_coeffs_n_fq_poly(
1161 a: *mut n_poly_struct,
1162 v: *const n_poly_struct,
1163 E: *mut nmod_eval_interp_struct,
1164 ctx: *const fq_nmod_ctx_struct,
1165 );
1166 pub fn nmod_eval_interp_from_coeffs_n_fq_poly(
1167 v: *mut n_poly_struct,
1168 a: *const n_poly_struct,
1169 E: *mut nmod_eval_interp_struct,
1170 ctx: *const fq_nmod_ctx_struct,
1171 );
1172 #[link_name = "nmod_evals_zero__extern"]
1173 pub fn nmod_evals_zero(a: *mut n_poly_struct);
1174 pub fn nmod_evals_add_inplace(
1175 a: *mut n_poly_struct,
1176 b: *mut n_poly_struct,
1177 len: slong,
1178 ctx: nmod_t,
1179 );
1180 pub fn nmod_evals_mul(
1181 a: *mut n_poly_struct,
1182 b: *mut n_poly_struct,
1183 c: *mut n_poly_struct,
1184 len: slong,
1185 ctx: nmod_t,
1186 );
1187 pub fn nmod_evals_addmul(
1188 a: *mut n_poly_struct,
1189 b: *mut n_poly_struct,
1190 c: *mut n_poly_struct,
1191 len: slong,
1192 ctx: nmod_t,
1193 );
1194 pub fn nmod_evals_fmma(
1195 a: *mut n_poly_struct,
1196 b: *mut n_poly_struct,
1197 c: *mut n_poly_struct,
1198 d: *mut n_poly_struct,
1199 e: *mut n_poly_struct,
1200 len: slong,
1201 ctx: nmod_t,
1202 );
1203 #[link_name = "n_fq_evals_zero__extern"]
1204 pub fn n_fq_evals_zero(a: *mut n_poly_struct);
1205 pub fn n_fq_evals_add_inplace(
1206 a: *mut n_poly_struct,
1207 b: *mut n_poly_struct,
1208 len: slong,
1209 ctx: *const fq_nmod_ctx_struct,
1210 );
1211 pub fn n_fq_evals_mul(
1212 a: *mut n_poly_struct,
1213 b: *mut n_poly_struct,
1214 c: *mut n_poly_struct,
1215 len: slong,
1216 ctx: *const fq_nmod_ctx_struct,
1217 );
1218 pub fn n_fq_evals_addmul(
1219 a: *mut n_poly_struct,
1220 b: *mut n_poly_struct,
1221 c: *mut n_poly_struct,
1222 len: slong,
1223 ctx: *const fq_nmod_ctx_struct,
1224 );
1225 pub fn n_fq_evals_fmma(
1226 a: *mut n_poly_struct,
1227 b: *mut n_poly_struct,
1228 c: *mut n_poly_struct,
1229 f: *mut n_poly_struct,
1230 e: *mut n_poly_struct,
1231 len: slong,
1232 ctx: *const fq_nmod_ctx_struct,
1233 );
1234 #[link_name = "n_polyun_init__extern"]
1235 pub fn n_polyun_init(A: *mut n_polyun_struct);
1236 pub fn n_polyun_clear(A: *mut n_polyun_struct);
1237 pub fn n_polyun_realloc(A: *mut n_polyun_struct, len: slong);
1238 pub fn n_polyun_is_canonical(A: *const n_polyun_struct) -> libc::c_int;
1239 pub fn n_polyun_mod_is_canonical(A: *const n_polyun_struct, mod_: nmod_t) -> libc::c_int;
1240 #[link_name = "n_polyun_fit_length__extern"]
1241 pub fn n_polyun_fit_length(A: *mut n_polyun_struct, len: slong);
1242 #[link_name = "n_polyun_swap__extern"]
1243 pub fn n_polyun_swap(A: *mut n_polyun_struct, B: *mut n_polyun_struct);
1244 pub fn n_polyun_set(A: *mut n_polyun_struct, B: *const n_polyun_struct);
1245 pub fn n_polyu1n_print_pretty(
1246 A: *const n_polyun_struct,
1247 var0: *const libc::c_char,
1248 varlast: *const libc::c_char,
1249 );
1250 pub fn n_polyu2n_print_pretty(
1251 A: *const n_polyun_struct,
1252 gen0: *const libc::c_char,
1253 gen1: *const libc::c_char,
1254 varlast: *const libc::c_char,
1255 );
1256 pub fn n_polyu3n_print_pretty(
1257 A: *const n_polyun_struct,
1258 gen0: *const libc::c_char,
1259 gen1: *const libc::c_char,
1260 var2: *const libc::c_char,
1261 varlast: *const libc::c_char,
1262 );
1263 pub fn n_polyun_equal(A: *const n_polyun_struct, B: *const n_polyun_struct) -> libc::c_int;
1264 #[link_name = "n_polyun_one__extern"]
1265 pub fn n_polyun_one(A: *mut n_polyun_struct);
1266 #[link_name = "n_polyu1n_bidegree__extern"]
1267 pub fn n_polyu1n_bidegree(A: *mut n_polyun_struct) -> ulong;
1268 pub fn n_polyu1n_mod_gcd_brown_smprime(
1269 G: *mut n_polyun_struct,
1270 Abar: *mut n_polyun_struct,
1271 Bbar: *mut n_polyun_struct,
1272 A: *mut n_polyun_struct,
1273 B: *mut n_polyun_struct,
1274 ctx: nmod_t,
1275 St: *mut n_poly_polyun_stack_struct,
1276 ) -> libc::c_int;
1277 pub fn n_fq_poly_product_roots_n_fq(
1278 M: *mut n_poly_struct,
1279 H: *const ulong,
1280 length: slong,
1281 ctx: *const fq_nmod_ctx_struct,
1282 St: *mut n_poly_stack_struct,
1283 );
1284 pub fn n_polyun_product_roots(
1285 M: *mut n_polyun_struct,
1286 H: *const n_polyun_struct,
1287 ctx: nmod_t,
1288 ) -> slong;
1289 pub fn n_fq_polyun_product_roots(
1290 M: *mut n_polyun_struct,
1291 H: *const n_polyun_struct,
1292 ctx: *const fq_nmod_ctx_struct,
1293 St: *mut n_poly_stack_struct,
1294 ) -> slong;
1295 pub fn _nmod_zip_eval_step(
1296 cur: *mut ulong,
1297 inc: *const ulong,
1298 coeffs: *const ulong,
1299 length: slong,
1300 ctx: nmod_t,
1301 ) -> ulong;
1302 pub fn _n_fq_zip_eval_step(
1303 res: *mut ulong,
1304 cur: *mut ulong,
1305 inc: *const ulong,
1306 coeffs: *const ulong,
1307 length: slong,
1308 ctx: *const fq_nmod_ctx_struct,
1309 );
1310 pub fn _n_fqp_zip_eval_step(
1311 res: *mut ulong,
1312 cur: *mut ulong,
1313 inc: *const ulong,
1314 coeffs: *const ulong,
1315 length: slong,
1316 d: slong,
1317 mod_: nmod_t,
1318 );
1319 pub fn _nmod_zip_vand_solve(
1320 coeffs: *mut ulong,
1321 monomials: *const ulong,
1322 mlength: slong,
1323 evals: *const ulong,
1324 elength: slong,
1325 master: *const ulong,
1326 scratch: *mut ulong,
1327 ctx: nmod_t,
1328 ) -> libc::c_int;
1329 pub fn _n_fq_zip_vand_solve(
1330 coeffs: *mut ulong,
1331 monomials: *const ulong,
1332 mlength: slong,
1333 evals: *const ulong,
1334 elength: slong,
1335 master: *const ulong,
1336 scratch: *mut ulong,
1337 ctx: *const fq_nmod_ctx_struct,
1338 ) -> libc::c_int;
1339 pub fn _n_fqp_zip_vand_solve(
1340 coeffs: *mut ulong,
1341 monomials: *const ulong,
1342 mlength: slong,
1343 evals: *const ulong,
1344 elength: slong,
1345 master: *const ulong,
1346 scratch: *mut ulong,
1347 ctx: *const fq_nmod_ctx_struct,
1348 ) -> libc::c_int;
1349 pub fn n_poly_stack_init(S: *mut n_poly_stack_struct);
1350 pub fn n_poly_stack_clear(S: *mut n_poly_stack_struct);
1351 pub fn n_poly_stack_fit_request(
1352 S: *mut n_poly_stack_struct,
1353 k: slong,
1354 ) -> *mut *mut n_poly_struct;
1355 #[link_name = "n_poly_stack_vec_init__extern"]
1356 pub fn n_poly_stack_vec_init(S: *mut n_poly_stack_struct, len: slong) -> *mut ulong;
1357 #[link_name = "n_poly_stack_vec_clear__extern"]
1358 pub fn n_poly_stack_vec_clear(S: *mut n_poly_stack_struct);
1359 #[link_name = "n_poly_stack_request__extern"]
1360 pub fn n_poly_stack_request(S: *mut n_poly_stack_struct, k: slong) -> *mut *mut n_poly_struct;
1361 #[link_name = "n_poly_stack_take_top__extern"]
1362 pub fn n_poly_stack_take_top(S: *mut n_poly_stack_struct) -> *mut n_poly_struct;
1363 #[link_name = "n_poly_stack_give_back__extern"]
1364 pub fn n_poly_stack_give_back(S: *mut n_poly_stack_struct, k: slong);
1365 #[link_name = "n_poly_stack_size__extern"]
1366 pub fn n_poly_stack_size(S: *const n_poly_stack_struct) -> slong;
1367 pub fn n_bpoly_stack_init(S: *mut n_bpoly_stack_struct);
1368 pub fn n_bpoly_stack_clear(S: *mut n_bpoly_stack_struct);
1369 pub fn n_bpoly_stack_fit_request(
1370 S: *mut n_bpoly_stack_struct,
1371 k: slong,
1372 ) -> *mut *mut n_bpoly_struct;
1373 #[link_name = "n_bpoly_stack_request__extern"]
1374 pub fn n_bpoly_stack_request(
1375 S: *mut n_bpoly_stack_struct,
1376 k: slong,
1377 ) -> *mut *mut n_bpoly_struct;
1378 #[link_name = "n_bpoly_stack_take_top__extern"]
1379 pub fn n_bpoly_stack_take_top(S: *mut n_bpoly_stack_struct) -> *mut n_bpoly_struct;
1380 #[link_name = "n_bpoly_stack_give_back__extern"]
1381 pub fn n_bpoly_stack_give_back(S: *mut n_bpoly_stack_struct, k: slong);
1382 #[link_name = "n_bpoly_stack_size__extern"]
1383 pub fn n_bpoly_stack_size(S: *const n_bpoly_stack_struct) -> slong;
1384 pub fn n_polyun_stack_init(S: *mut n_polyun_stack_struct);
1385 pub fn n_polyun_stack_clear(S: *mut n_polyun_stack_struct);
1386 pub fn n_polyun_stack_fit_request(
1387 S: *mut n_polyun_stack_struct,
1388 k: slong,
1389 ) -> *mut *mut n_polyun_struct;
1390 #[link_name = "n_polyun_stack_request__extern"]
1391 pub fn n_polyun_stack_request(
1392 S: *mut n_polyun_stack_struct,
1393 k: slong,
1394 ) -> *mut *mut n_polyun_struct;
1395 #[link_name = "n_polyun_stack_take_top__extern"]
1396 pub fn n_polyun_stack_take_top(S: *mut n_polyun_stack_struct) -> *mut n_polyun_struct;
1397 #[link_name = "n_polyun_stack_give_back__extern"]
1398 pub fn n_polyun_stack_give_back(S: *mut n_polyun_stack_struct, k: slong);
1399 #[link_name = "n_polyun_stack_size__extern"]
1400 pub fn n_polyun_stack_size(S: *const n_polyun_stack_struct) -> slong;
1401}