flint_sys/
fq_default_poly.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [FLINT documentation](http://flintlib.org/doc/fq_default_poly.html).
4
5use 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}