1#![allow(non_camel_case_types)]
2
3use crate::deps::*;
6use crate::flint::*;
7use crate::fmpz::fmpz;
8use crate::fmpz_mod_poly::fmpz_mod_poly_struct;
9use crate::fmpz_poly::fmpz_poly_struct;
10use crate::fq_default::{fq_default_ctx_struct, fq_default_struct};
11use crate::fq_default_mat::fq_default_mat_struct;
12use crate::fq_nmod_poly::fq_nmod_poly_t;
13use crate::fq_poly::fq_poly_t;
14use crate::fq_zech_poly::fq_zech_poly_t;
15use crate::nmod_poly::nmod_poly_struct;
16use libc::{c_char, c_int, FILE};
17
18#[repr(C)]
19#[derive(Copy, Clone)]
20pub union fq_default_poly_struct {
21 pub fq: fq_poly_t,
22 pub fq_nmod: fq_nmod_poly_t,
23 pub fq_zech: fq_zech_poly_t,
24}
25
26pub type fq_default_poly_t = [fq_default_poly_struct; 1usize];
27
28extern "C" {
29 pub fn fq_default_poly_init(
30 poly: *mut fq_default_poly_struct,
31 ctx: *const fq_default_ctx_struct,
32 );
33 pub fn fq_default_poly_init2(
34 poly: *mut fq_default_poly_struct,
35 alloc: mp_limb_signed_t,
36 ctx: *const fq_default_ctx_struct,
37 );
38 pub fn fq_default_poly_realloc(
39 poly: *mut fq_default_poly_struct,
40 alloc: mp_limb_signed_t,
41 ctx: *const fq_default_ctx_struct,
42 );
43 pub fn fq_default_poly_truncate(
44 poly: *mut fq_default_poly_struct,
45 len: mp_limb_signed_t,
46 ctx: *const fq_default_ctx_struct,
47 );
48 pub fn fq_default_poly_set_trunc(
49 poly1: *mut fq_default_poly_struct,
50 poly2: *const fq_default_poly_struct,
51 len: mp_limb_signed_t,
52 ctx: *const fq_default_ctx_struct,
53 );
54 pub fn fq_default_poly_fit_length(
55 poly: *mut fq_default_poly_struct,
56 len: mp_limb_signed_t,
57 ctx: *const fq_default_ctx_struct,
58 );
59 pub fn _fq_default_poly_set_length(
60 poly: *mut fq_default_poly_struct,
61 len: mp_limb_signed_t,
62 ctx: *const fq_default_ctx_struct,
63 );
64 pub fn fq_default_poly_clear(
65 poly: *mut fq_default_poly_struct,
66 ctx: *const fq_default_ctx_struct,
67 );
68 pub fn fq_default_poly_length(
69 poly: *const fq_default_poly_struct,
70 ctx: *const fq_default_ctx_struct,
71 ) -> mp_limb_signed_t;
72 pub fn fq_default_poly_degree(
73 poly: *const fq_default_poly_struct,
74 ctx: *const fq_default_ctx_struct,
75 ) -> mp_limb_signed_t;
76 pub fn fq_default_poly_randtest(
77 f: *mut fq_default_poly_struct,
78 state: *const flint_rand_s,
79 len: mp_limb_signed_t,
80 ctx: *const fq_default_ctx_struct,
81 );
82 pub fn fq_default_poly_randtest_not_zero(
83 f: *mut fq_default_poly_struct,
84 state: *const flint_rand_s,
85 len: mp_limb_signed_t,
86 ctx: *const fq_default_ctx_struct,
87 );
88 pub fn fq_default_poly_randtest_monic(
89 f: *mut fq_default_poly_struct,
90 state: *const flint_rand_s,
91 len: mp_limb_signed_t,
92 ctx: *const fq_default_ctx_struct,
93 );
94 pub fn fq_default_poly_randtest_irreducible(
95 f: *mut fq_default_poly_struct,
96 state: *const flint_rand_s,
97 len: mp_limb_signed_t,
98 ctx: *const fq_default_ctx_struct,
99 );
100 pub fn fq_default_poly_set(
101 rop: *mut fq_default_poly_struct,
102 op: *const fq_default_poly_struct,
103 ctx: *const fq_default_ctx_struct,
104 );
105 pub fn fq_default_poly_set_fq_default(
106 poly: *mut fq_default_poly_struct,
107 c: *const fq_default_struct,
108 ctx: *const fq_default_ctx_struct,
109 );
110 pub fn fq_default_poly_swap(
111 op1: *mut fq_default_poly_struct,
112 op2: *mut fq_default_poly_struct,
113 ctx: *const fq_default_ctx_struct,
114 );
115 pub fn fq_default_poly_zero(
116 poly: *mut fq_default_poly_struct,
117 ctx: *const fq_default_ctx_struct,
118 );
119 pub fn fq_default_poly_one(
120 poly: *mut fq_default_poly_struct,
121 ctx: *const fq_default_ctx_struct,
122 );
123 pub fn fq_default_poly_gen(f: *mut fq_default_poly_struct, ctx: *const fq_default_ctx_struct);
124 pub fn fq_default_poly_make_monic(
125 rop: *mut fq_default_poly_struct,
126 op: *const fq_default_poly_struct,
127 ctx: *const fq_default_ctx_struct,
128 );
129 pub fn fq_default_poly_reverse(
130 res: *mut fq_default_poly_struct,
131 poly: *const fq_default_poly_struct,
132 n: mp_limb_signed_t,
133 ctx: *const fq_default_ctx_struct,
134 );
135 pub fn fq_default_poly_deflation(
136 input: *mut fq_default_poly_struct,
137 ctx: *const fq_default_ctx_struct,
138 ) -> mp_limb_t;
139 pub fn fq_default_poly_deflate(
140 result: *mut fq_default_poly_struct,
141 input: *const fq_default_poly_struct,
142 deflation: mp_limb_t,
143 ctx: *const fq_default_ctx_struct,
144 );
145 pub fn fq_default_poly_inflate(
146 result: *mut fq_default_poly_struct,
147 input: *const fq_default_poly_struct,
148 inflation: mp_limb_t,
149 ctx: *const fq_default_ctx_struct,
150 );
151 pub fn fq_default_poly_get_coeff(
152 x: *mut fq_default_struct,
153 poly: *const fq_default_poly_struct,
154 n: mp_limb_signed_t,
155 ctx: *const fq_default_ctx_struct,
156 );
157 pub fn fq_default_poly_set_coeff(
158 poly: *mut fq_default_poly_struct,
159 n: mp_limb_signed_t,
160 x: *const fq_default_struct,
161 ctx: *const fq_default_ctx_struct,
162 );
163 pub fn fq_default_poly_set_coeff_fmpz(
164 poly: *mut fq_default_poly_struct,
165 n: mp_limb_signed_t,
166 x: *const fmpz,
167 ctx: *const fq_default_ctx_struct,
168 );
169 pub fn fq_default_poly_set_nmod_poly(
170 rop: *mut fq_default_poly_struct,
171 op: *const nmod_poly_struct,
172 ctx: *const fq_default_ctx_struct,
173 );
174 pub fn fq_default_poly_set_fmpz_mod_poly(
175 rop: *mut fq_default_poly_struct,
176 op: *const fmpz_mod_poly_struct,
177 ctx: *const fq_default_ctx_struct,
178 );
179 pub fn fq_default_poly_set_fmpz_poly(
180 rop: *mut fq_default_poly_struct,
181 op: *const fmpz_poly_struct,
182 ctx: *const fq_default_ctx_struct,
183 );
184 pub fn fq_default_poly_equal(
185 poly1: *const fq_default_poly_struct,
186 poly2: *const fq_default_poly_struct,
187 ctx: *const fq_default_ctx_struct,
188 ) -> c_int;
189 pub fn fq_default_poly_equal_trunc(
190 poly1: *const fq_default_poly_struct,
191 poly2: *const fq_default_poly_struct,
192 n: mp_limb_signed_t,
193 ctx: *const fq_default_ctx_struct,
194 ) -> c_int;
195 pub fn fq_default_poly_is_zero(
196 poly: *const fq_default_poly_struct,
197 ctx: *const fq_default_ctx_struct,
198 ) -> c_int;
199 pub fn fq_default_poly_is_one(
200 op: *const fq_default_poly_struct,
201 ctx: *const fq_default_ctx_struct,
202 ) -> c_int;
203 pub fn fq_default_poly_is_unit(
204 op: *const fq_default_poly_struct,
205 ctx: *const fq_default_ctx_struct,
206 ) -> c_int;
207 pub fn fq_default_poly_is_gen(
208 poly: *const fq_default_poly_struct,
209 ctx: *const fq_default_ctx_struct,
210 ) -> c_int;
211 pub fn fq_default_poly_equal_fq_default(
212 poly: *const fq_default_poly_struct,
213 c: *const fq_default_struct,
214 ctx: *const fq_default_ctx_struct,
215 ) -> c_int;
216 pub fn fq_default_poly_add(
217 rop: *mut fq_default_poly_struct,
218 op1: *const fq_default_poly_struct,
219 op2: *const fq_default_poly_struct,
220 ctx: *const fq_default_ctx_struct,
221 );
222 pub fn fq_default_poly_add_si(
223 rop: *mut fq_default_poly_struct,
224 op1: *const fq_default_poly_struct,
225 c: mp_limb_signed_t,
226 ctx: *const fq_default_ctx_struct,
227 );
228 pub fn fq_default_poly_add_series(
229 rop: *mut fq_default_poly_struct,
230 op1: *const fq_default_poly_struct,
231 op2: *const fq_default_poly_struct,
232 n: mp_limb_signed_t,
233 ctx: *const fq_default_ctx_struct,
234 );
235 pub fn fq_default_poly_sub(
236 rop: *mut fq_default_poly_struct,
237 op1: *const fq_default_poly_struct,
238 op2: *const fq_default_poly_struct,
239 ctx: *const fq_default_ctx_struct,
240 );
241 pub fn fq_default_poly_sub_series(
242 rop: *mut fq_default_poly_struct,
243 op1: *const fq_default_poly_struct,
244 op2: *const fq_default_poly_struct,
245 n: mp_limb_signed_t,
246 ctx: *const fq_default_ctx_struct,
247 );
248 pub fn fq_default_poly_neg(
249 rop: *mut fq_default_poly_struct,
250 op: *const fq_default_poly_struct,
251 ctx: *const fq_default_ctx_struct,
252 );
253 pub fn fq_default_poly_scalar_mul_fq_default(
254 rop: *mut fq_default_poly_struct,
255 op: *const fq_default_poly_struct,
256 x: *const fq_default_struct,
257 ctx: *const fq_default_ctx_struct,
258 );
259 pub fn fq_default_poly_scalar_div_fq_default(
260 rop: *mut fq_default_poly_struct,
261 op: *const fq_default_poly_struct,
262 x: *const fq_default_struct,
263 ctx: *const fq_default_ctx_struct,
264 );
265 pub fn fq_default_poly_scalar_addmul_fq_default(
266 rop: *mut fq_default_poly_struct,
267 op: *const fq_default_poly_struct,
268 x: *const fq_default_struct,
269 ctx: *const fq_default_ctx_struct,
270 );
271 pub fn fq_default_poly_scalar_submul_fq_default(
272 rop: *mut fq_default_poly_struct,
273 op: *const fq_default_poly_struct,
274 x: *const fq_default_struct,
275 ctx: *const fq_default_ctx_struct,
276 );
277 pub fn fq_default_poly_mul(
278 rop: *mut fq_default_poly_struct,
279 op1: *const fq_default_poly_struct,
280 op2: *const fq_default_poly_struct,
281 ctx: *const fq_default_ctx_struct,
282 );
283 pub fn fq_default_poly_mullow(
284 rop: *mut fq_default_poly_struct,
285 op1: *const fq_default_poly_struct,
286 op2: *const fq_default_poly_struct,
287 n: mp_limb_signed_t,
288 ctx: *const fq_default_ctx_struct,
289 );
290 pub fn fq_default_poly_mulhigh(
291 rop: *mut fq_default_poly_struct,
292 op1: *const fq_default_poly_struct,
293 op2: *const fq_default_poly_struct,
294 start: mp_limb_signed_t,
295 ctx: *const fq_default_ctx_struct,
296 );
297 pub fn fq_default_poly_mulmod(
298 res: *mut fq_default_poly_struct,
299 poly1: *const fq_default_poly_struct,
300 poly2: *const fq_default_poly_struct,
301 f: *const fq_default_poly_struct,
302 ctx: *const fq_default_ctx_struct,
303 );
304 pub fn fq_default_poly_sqr(
305 rop: *mut fq_default_poly_struct,
306 op: *const fq_default_poly_struct,
307 ctx: *const fq_default_ctx_struct,
308 );
309 pub fn fq_default_poly_pow(
310 rop: *mut fq_default_poly_struct,
311 op: *const fq_default_poly_struct,
312 e: mp_limb_t,
313 ctx: *const fq_default_ctx_struct,
314 );
315 pub fn fq_default_poly_pow_trunc(
316 res: *mut fq_default_poly_struct,
317 poly: *const fq_default_poly_struct,
318 e: mp_limb_t,
319 trunc: mp_limb_signed_t,
320 ctx: *const fq_default_ctx_struct,
321 );
322 pub fn fq_default_poly_powmod_fmpz_binexp(
323 res: *mut fq_default_poly_struct,
324 poly: *const fq_default_poly_struct,
325 e: *const fmpz,
326 f: *const fq_default_poly_struct,
327 ctx: *const fq_default_ctx_struct,
328 );
329 pub fn fq_default_poly_powmod_ui_binexp(
330 res: *mut fq_default_poly_struct,
331 poly: *const fq_default_poly_struct,
332 e: mp_limb_t,
333 f: *const fq_default_poly_struct,
334 ctx: *const fq_default_ctx_struct,
335 );
336 pub fn fq_default_poly_shift_left(
337 rop: *mut fq_default_poly_struct,
338 op: *const fq_default_poly_struct,
339 n: mp_limb_signed_t,
340 ctx: *const fq_default_ctx_struct,
341 );
342 pub fn fq_default_poly_shift_right(
343 rop: *mut fq_default_poly_struct,
344 op: *const fq_default_poly_struct,
345 n: mp_limb_signed_t,
346 ctx: *const fq_default_ctx_struct,
347 );
348 pub fn fq_default_poly_hamming_weight(
349 op: *mut fq_default_poly_struct,
350 ctx: *const fq_default_ctx_struct,
351 ) -> mp_limb_signed_t;
352 pub fn fq_default_poly_gcd(
353 rop: *mut fq_default_poly_struct,
354 op1: *const fq_default_poly_struct,
355 op2: *const fq_default_poly_struct,
356 ctx: *const fq_default_ctx_struct,
357 );
358 pub fn fq_default_poly_xgcd(
359 G: *mut fq_default_poly_struct,
360 S: *mut fq_default_poly_struct,
361 T: *mut fq_default_poly_struct,
362 A: *const fq_default_poly_struct,
363 B: *const fq_default_poly_struct,
364 ctx: *const fq_default_ctx_struct,
365 );
366 pub fn fq_default_poly_remove(
367 f: *mut fq_default_poly_struct,
368 g: *const fq_default_poly_struct,
369 ctx: *const fq_default_ctx_struct,
370 ) -> mp_limb_t;
371 pub fn fq_default_poly_divrem(
372 Q: *mut fq_default_poly_struct,
373 R: *mut fq_default_poly_struct,
374 A: *const fq_default_poly_struct,
375 B: *const fq_default_poly_struct,
376 ctx: *const fq_default_ctx_struct,
377 );
378 pub fn fq_default_poly_rem(
379 R: *mut fq_default_poly_struct,
380 A: *const fq_default_poly_struct,
381 B: *const fq_default_poly_struct,
382 ctx: *const fq_default_ctx_struct,
383 );
384 pub fn fq_default_poly_inv_series(
385 Qinv: *mut fq_default_poly_struct,
386 Q: *const fq_default_poly_struct,
387 n: mp_limb_signed_t,
388 ctx: *const fq_default_ctx_struct,
389 );
390 pub fn fq_default_poly_div_series(
391 Q: *mut fq_default_poly_struct,
392 A: *const fq_default_poly_struct,
393 B: *const fq_default_poly_struct,
394 n: mp_limb_signed_t,
395 ctx: *const fq_default_ctx_struct,
396 );
397 pub fn fq_default_poly_divides(
398 Q: *mut fq_default_poly_struct,
399 A: *const fq_default_poly_struct,
400 B: *const fq_default_poly_struct,
401 ctx: *const fq_default_ctx_struct,
402 ) -> c_int;
403 pub fn fq_default_poly_derivative(
404 rop: *mut fq_default_poly_struct,
405 op: *const fq_default_poly_struct,
406 ctx: *const fq_default_ctx_struct,
407 );
408 pub fn fq_default_poly_evaluate_fq_default(
409 res: *mut fq_default_struct,
410 f: *const fq_default_poly_struct,
411 a: *const fq_default_struct,
412 ctx: *const fq_default_ctx_struct,
413 );
414 pub fn fq_default_poly_compose(
415 rop: *mut fq_default_poly_struct,
416 op1: *const fq_default_poly_struct,
417 op2: *const fq_default_poly_struct,
418 ctx: *const fq_default_ctx_struct,
419 );
420 pub fn fq_default_poly_compose_mod(
421 res: *mut fq_default_poly_struct,
422 poly1: *const fq_default_poly_struct,
423 poly2: *const fq_default_poly_struct,
424 poly3: *const fq_default_poly_struct,
425 ctx: *const fq_default_ctx_struct,
426 );
427 pub fn fq_default_poly_fprint_pretty(
428 file: *mut FILE,
429 poly: *const fq_default_poly_struct,
430 x: *const c_char,
431 ctx: *const fq_default_ctx_struct,
432 ) -> c_int;
433 pub fn fq_default_poly_fprint(
434 file: *mut FILE,
435 poly: *const fq_default_poly_struct,
436 ctx: *const fq_default_ctx_struct,
437 ) -> c_int;
438 pub fn fq_default_poly_print(
439 poly: *const fq_default_poly_struct,
440 ctx: *const fq_default_ctx_struct,
441 ) -> c_int;
442 pub fn fq_default_poly_print_pretty(
443 poly: *const fq_default_poly_struct,
444 x: *const c_char,
445 ctx: *const fq_default_ctx_struct,
446 ) -> c_int;
447 pub fn fq_default_poly_get_str_pretty(
448 poly: *const fq_default_poly_struct,
449 x: *const c_char,
450 ctx: *const fq_default_ctx_struct,
451 ) -> *mut c_char;
452 pub fn fq_default_poly_get_str(
453 poly: *const fq_default_poly_struct,
454 ctx: *const fq_default_ctx_struct,
455 ) -> *mut c_char;
456 pub fn fq_default_mat_charpoly(
457 p: *mut fq_default_poly_struct,
458 M: *const fq_default_mat_struct,
459 ctx: *const fq_default_ctx_struct,
460 );
461 pub fn fq_default_mat_minpoly(
462 p: *mut fq_default_poly_struct,
463 X: *const fq_default_mat_struct,
464 ctx: *const fq_default_ctx_struct,
465 );
466}