flint_sys/
fq_default_poly_factor.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [FLINT documentation](http://flintlib.org/doc/fq_default_poly_factor.html).
4
5use crate::deps::*;
6use crate::fq_default::{fq_default_ctx_struct, fq_default_struct};
7use crate::fq_default_poly::fq_default_poly_struct;
8use crate::fq_nmod_poly_factor::fq_nmod_poly_factor_t;
9use crate::fq_poly_factor::fq_poly_factor_t;
10use crate::fq_zech_poly_factor::fq_zech_poly_factor_t;
11use libc::{c_char, c_int};
12
13#[repr(C)]
14#[derive(Copy, Clone)]
15pub union fq_default_poly_factor_struct {
16    pub fq: fq_poly_factor_t,
17    pub fq_nmod: fq_nmod_poly_factor_t,
18    pub fq_zech: fq_zech_poly_factor_t,
19}
20
21pub type fq_default_poly_factor_t = [fq_default_poly_factor_struct; 1usize];
22
23extern "C" {
24    pub fn fq_default_poly_factor_init(
25        fac: *mut fq_default_poly_factor_struct,
26        ctx: *mut fq_default_ctx_struct,
27    );
28    pub fn fq_default_poly_factor_clear(
29        fac: *mut fq_default_poly_factor_struct,
30        ctx: *mut fq_default_ctx_struct,
31    );
32    pub fn fq_default_poly_factor_realloc(
33        fac: *mut fq_default_poly_factor_struct,
34        alloc: mp_limb_signed_t,
35        ctx: *mut fq_default_ctx_struct,
36    );
37    pub fn fq_default_poly_factor_fit_length(
38        fac: *mut fq_default_poly_factor_struct,
39        len: mp_limb_signed_t,
40        ctx: *mut fq_default_ctx_struct,
41    );
42    pub fn fq_default_poly_factor_length(
43        fac: *mut fq_default_poly_factor_struct,
44        ctx: *mut fq_default_ctx_struct,
45    ) -> mp_limb_signed_t;
46    pub fn fq_default_poly_factor_exp(
47        fac: *mut fq_default_poly_factor_struct,
48        i: mp_limb_signed_t,
49        ctx: *mut fq_default_ctx_struct,
50    ) -> mp_limb_signed_t;
51    pub fn fq_default_poly_factor_set(
52        res: *mut fq_default_poly_factor_struct,
53        fac: *mut fq_default_poly_factor_struct,
54        ctx: *mut fq_default_ctx_struct,
55    );
56    pub fn fq_default_poly_factor_insert(
57        fac: *mut fq_default_poly_factor_struct,
58        poly: *mut fq_default_poly_struct,
59        exp: mp_limb_signed_t,
60        ctx: *mut fq_default_ctx_struct,
61    );
62    pub fn fq_default_poly_factor_get_poly(
63        poly: *mut fq_default_poly_struct,
64        fac: *mut fq_default_poly_factor_struct,
65        i: mp_limb_signed_t,
66        ctx: *mut fq_default_ctx_struct,
67    );
68    pub fn fq_default_poly_factor_print(
69        fac: *mut fq_default_poly_factor_struct,
70        ctx: *mut fq_default_ctx_struct,
71    );
72    pub fn fq_default_poly_factor_print_pretty(
73        fac: *mut fq_default_poly_factor_struct,
74        var: *const c_char,
75        ctx: *mut fq_default_ctx_struct,
76    );
77    pub fn fq_default_poly_factor_concat(
78        res: *mut fq_default_poly_factor_struct,
79        fac: *mut fq_default_poly_factor_struct,
80        ctx: *mut fq_default_ctx_struct,
81    );
82    pub fn fq_default_poly_factor_pow(
83        fac: *mut fq_default_poly_factor_struct,
84        exp: mp_limb_signed_t,
85        ctx: *mut fq_default_ctx_struct,
86    );
87    pub fn fq_default_poly_is_squarefree(
88        f: *mut fq_default_poly_struct,
89        ctx: *mut fq_default_ctx_struct,
90    ) -> c_int;
91    pub fn fq_default_poly_factor_squarefree(
92        res: *mut fq_default_poly_factor_struct,
93        f: *mut fq_default_poly_struct,
94        ctx: *mut fq_default_ctx_struct,
95    );
96    pub fn fq_default_poly_is_irreducible(
97        f: *mut fq_default_poly_struct,
98        ctx: *mut fq_default_ctx_struct,
99    ) -> c_int;
100    pub fn fq_default_poly_factor_distinct_deg(
101        res: *mut fq_default_poly_factor_struct,
102        poly: *mut fq_default_poly_struct,
103        degs: *const *mut mp_limb_signed_t,
104        ctx: *mut fq_default_ctx_struct,
105    );
106    pub fn fq_default_poly_factor_equal_deg(
107        factors: *mut fq_default_poly_factor_struct,
108        pol: *mut fq_default_poly_struct,
109        d: mp_limb_signed_t,
110        ctx: *mut fq_default_ctx_struct,
111    );
112    pub fn fq_default_poly_factor(
113        result: *mut fq_default_poly_factor_struct,
114        leading_coeff: *mut fq_default_struct,
115        input: *mut fq_default_poly_struct,
116        ctx: *mut fq_default_ctx_struct,
117    );
118    pub fn fq_default_poly_factor_split_single(
119        linfactor: *mut fq_default_poly_struct,
120        input: *mut fq_default_poly_struct,
121        ctx: *mut fq_default_ctx_struct,
122    );
123    pub fn fq_default_poly_roots(
124        r: *mut fq_default_poly_factor_struct,
125        f: *mut fq_default_poly_struct,
126        with_multiplicity: c_int,
127        ctx: *mut fq_default_ctx_struct,
128    );
129}