flint_sys/
fq_nmod_poly_factor.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [FLINT documentation](http://flintlib.org/doc/fq_nmod_poly_factor.html).
4
5use crate::deps::*;
6use crate::flint::*;
7use crate::fq_nmod::{fq_nmod_ctx_struct, fq_nmod_struct};
8use crate::fq_nmod_poly::{fq_nmod_poly_struct, fq_nmod_poly_t};
9use crate::nmod_poly::nmod_poly_struct;
10use libc::{c_char, c_int};
11
12#[repr(C)]
13#[derive(Debug, Copy, Clone)]
14pub struct fq_nmod_poly_factor_struct {
15    pub poly: *mut fq_nmod_poly_struct,
16    pub exp: *mut mp_limb_signed_t,
17    pub num: mp_limb_signed_t,
18    pub alloc: mp_limb_signed_t,
19}
20
21pub type fq_nmod_poly_factor_t = [fq_nmod_poly_factor_struct; 1usize];
22
23extern "C" {
24    pub fn FQ_NMOD_POLY_ITERATED_FROBENIUS_CUTOFF(
25        ctx: *mut fq_nmod_ctx_struct,
26        length: mp_limb_signed_t,
27    ) -> c_int;
28    pub fn fq_nmod_poly_factor_init(
29        fac: *mut fq_nmod_poly_factor_struct,
30        ctx: *mut fq_nmod_ctx_struct,
31    );
32    pub fn fq_nmod_poly_factor_clear(
33        fac: *mut fq_nmod_poly_factor_struct,
34        ctx: *mut fq_nmod_ctx_struct,
35    );
36    pub fn fq_nmod_poly_factor_realloc(
37        fac: *mut fq_nmod_poly_factor_struct,
38        alloc: mp_limb_signed_t,
39        ctx: *mut fq_nmod_ctx_struct,
40    );
41    pub fn fq_nmod_poly_factor_fit_length(
42        fac: *mut fq_nmod_poly_factor_struct,
43        len: mp_limb_signed_t,
44        ctx: *mut fq_nmod_ctx_struct,
45    );
46    pub fn fq_nmod_poly_factor_set(
47        res: *mut fq_nmod_poly_factor_struct,
48        fac: *mut fq_nmod_poly_factor_struct,
49        ctx: *mut fq_nmod_ctx_struct,
50    );
51    pub fn fq_nmod_poly_factor_insert(
52        fac: *mut fq_nmod_poly_factor_struct,
53        poly: *mut fq_nmod_poly_struct,
54        exp: mp_limb_signed_t,
55        ctx: *mut fq_nmod_ctx_struct,
56    );
57    pub fn fq_nmod_poly_factor_print(
58        fac: *mut fq_nmod_poly_factor_struct,
59        ctx: *mut fq_nmod_ctx_struct,
60    );
61    pub fn fq_nmod_poly_factor_print_pretty(
62        fac: *mut fq_nmod_poly_factor_struct,
63        var: *const c_char,
64        ctx: *mut fq_nmod_ctx_struct,
65    );
66    pub fn fq_nmod_poly_factor_concat(
67        res: *mut fq_nmod_poly_factor_struct,
68        fac: *mut fq_nmod_poly_factor_struct,
69        ctx: *mut fq_nmod_ctx_struct,
70    );
71    pub fn fq_nmod_poly_factor_pow(
72        fac: *mut fq_nmod_poly_factor_struct,
73        exp: mp_limb_signed_t,
74        ctx: *mut fq_nmod_ctx_struct,
75    );
76    pub fn _fq_nmod_poly_is_squarefree(
77        f: *const fq_nmod_struct,
78        len: mp_limb_signed_t,
79        ctx: *mut fq_nmod_ctx_struct,
80    ) -> c_int;
81    pub fn fq_nmod_poly_is_squarefree(
82        f: *mut fq_nmod_poly_struct,
83        ctx: *mut fq_nmod_ctx_struct,
84    ) -> c_int;
85    pub fn fq_nmod_poly_factor_squarefree(
86        res: *mut fq_nmod_poly_factor_struct,
87        f: *mut fq_nmod_poly_struct,
88        ctx: *mut fq_nmod_ctx_struct,
89    );
90    pub fn fq_nmod_poly_is_irreducible(
91        f: *mut fq_nmod_poly_struct,
92        ctx: *mut fq_nmod_ctx_struct,
93    ) -> c_int;
94    pub fn fq_nmod_poly_is_irreducible_ddf(
95        f: *mut fq_nmod_poly_struct,
96        ctx: *mut fq_nmod_ctx_struct,
97    ) -> c_int;
98    pub fn fq_nmod_poly_is_irreducible_ben_or(
99        f: *mut fq_nmod_poly_struct,
100        ctx: *mut fq_nmod_ctx_struct,
101    ) -> c_int;
102    pub fn fq_nmod_poly_factor_distinct_deg(
103        res: *mut fq_nmod_poly_factor_struct,
104        poly: *mut fq_nmod_poly_struct,
105        degs: *const *mut mp_limb_signed_t,
106        ctx: *mut fq_nmod_ctx_struct,
107    );
108    pub fn fq_nmod_poly_factor_equal_deg_prob(
109        factor: *mut fq_nmod_poly_struct,
110        state: *mut flint_rand_s,
111        pol: *mut fq_nmod_poly_struct,
112        d: mp_limb_signed_t,
113        ctx: *mut fq_nmod_ctx_struct,
114    ) -> c_int;
115    pub fn fq_nmod_poly_factor_equal_deg(
116        factors: *mut fq_nmod_poly_factor_struct,
117        pol: *mut fq_nmod_poly_struct,
118        d: mp_limb_signed_t,
119        ctx: *mut fq_nmod_ctx_struct,
120    );
121    pub fn fq_nmod_poly_factor_cantor_zassenhaus(
122        res: *mut fq_nmod_poly_factor_struct,
123        f: *mut fq_nmod_poly_struct,
124        ctx: *mut fq_nmod_ctx_struct,
125    );
126    pub fn fq_nmod_poly_factor_kaltofen_shoup(
127        res: *mut fq_nmod_poly_factor_struct,
128        poly: *mut fq_nmod_poly_struct,
129        ctx: *mut fq_nmod_ctx_struct,
130    );
131    pub fn fq_nmod_poly_factor_berlekamp(
132        factors: *mut fq_nmod_poly_factor_struct,
133        f: *mut fq_nmod_poly_struct,
134        ctx: *mut fq_nmod_ctx_struct,
135    );
136    pub fn fq_nmod_poly_factor_with_berlekamp(
137        result: *mut fq_nmod_poly_factor_struct,
138        leading_coeff: *mut nmod_poly_struct,
139        input: *mut fq_nmod_poly_struct,
140        ctx: *mut fq_nmod_ctx_struct,
141    );
142    pub fn fq_nmod_poly_factor_with_cantor_zassenhaus(
143        result: *mut fq_nmod_poly_factor_struct,
144        leading_coeff: *mut nmod_poly_struct,
145        input: *mut fq_nmod_poly_struct,
146        ctx: *mut fq_nmod_ctx_struct,
147    );
148    pub fn fq_nmod_poly_factor_with_kaltofen_shoup(
149        result: *mut fq_nmod_poly_factor_struct,
150        leading_coeff: *mut nmod_poly_struct,
151        input: *mut fq_nmod_poly_struct,
152        ctx: *mut fq_nmod_ctx_struct,
153    );
154    pub fn fq_nmod_poly_factor(
155        result: *mut fq_nmod_poly_factor_struct,
156        leading_coeff: *mut nmod_poly_struct,
157        input: *mut fq_nmod_poly_struct,
158        ctx: *mut fq_nmod_ctx_struct,
159    );
160    pub fn fq_nmod_poly_iterated_frobenius_preinv(
161        rop: *mut fq_nmod_poly_t,
162        n: mp_limb_signed_t,
163        v: *mut fq_nmod_poly_struct,
164        vinv: *mut fq_nmod_poly_struct,
165        ctx: *mut fq_nmod_ctx_struct,
166    );
167    pub fn fq_nmod_poly_factor_split_single(
168        linfactor: *mut fq_nmod_poly_struct,
169        input: *mut fq_nmod_poly_struct,
170        ctx: *mut fq_nmod_ctx_struct,
171    );
172    pub fn fq_nmod_poly_roots(
173        r: *mut fq_nmod_poly_factor_struct,
174        f: *mut fq_nmod_poly_struct,
175        with_multiplicity: c_int,
176        ctx: *mut fq_nmod_ctx_struct,
177    );
178    pub fn fq_nmod_poly_factor_get_poly(
179        z: *mut fq_nmod_poly_struct,
180        fac: *mut fq_nmod_poly_factor_struct,
181        i: mp_limb_signed_t,
182        ctx: *mut fq_nmod_ctx_struct,
183    );
184}