flint_sys/
nmod_poly_factor.rs1#![allow(non_camel_case_types)]
2#![allow(non_snake_case)]
3
4use crate::deps::*;
7use crate::flint::*;
8use crate::nmod_poly::nmod_poly_struct;
9use crate::nmod_vec::nmod_t;
10use crate::ulong_extras::n_factor_t;
11
12#[repr(C)]
13#[derive(Debug, Copy, Clone)]
14pub struct nmod_poly_factor_struct {
15 pub p: *mut 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
21#[repr(C)]
22#[derive(Debug, Copy, Clone)]
23pub struct nmod_poly_interval_poly_arg_t {
24 pub baby: *mut nmod_poly_struct,
25 pub res: *mut nmod_poly_struct,
26 pub H: *mut nmod_poly_struct,
27 pub v: *mut nmod_poly_struct,
28 pub vinv: *mut nmod_poly_struct,
29 pub tmp: mp_ptr,
30 pub m: mp_limb_signed_t,
31}
32
33pub type nmod_poly_factor_t = [nmod_poly_factor_struct; 1usize];
34
35extern "C" {
36 pub fn nmod_poly_factor_init(fac: *mut nmod_poly_factor_struct);
37 pub fn nmod_poly_factor_clear(fac: *mut nmod_poly_factor_struct);
38 pub fn nmod_poly_factor_realloc(fac: *mut nmod_poly_factor_struct, alloc: mp_limb_signed_t);
39 pub fn nmod_poly_factor_fit_length(fac: *mut nmod_poly_factor_struct, len: mp_limb_signed_t);
40 pub fn nmod_poly_factor_set(
41 res: *mut nmod_poly_factor_struct,
42 fac: *mut nmod_poly_factor_struct,
43 );
44 pub fn nmod_poly_factor_swap(a: *mut nmod_poly_factor_struct, b: *mut nmod_poly_factor_struct);
45 pub fn nmod_poly_factor_insert(
46 fac: *mut nmod_poly_factor_struct,
47 poly: *mut nmod_poly_struct,
48 exp: mp_limb_signed_t,
49 );
50 pub fn nmod_poly_factor_print(fac: *mut nmod_poly_factor_struct);
51 pub fn nmod_poly_factor_concat(
52 res: *mut nmod_poly_factor_struct,
53 fac: *mut nmod_poly_factor_struct,
54 );
55 pub fn nmod_poly_factor_pow(fac: *mut nmod_poly_factor_struct, exp: mp_limb_signed_t);
56 pub fn nmod_poly_factor_equal_deg(
57 factors: *mut nmod_poly_factor_struct,
58 pol: *mut nmod_poly_struct,
59 d: mp_limb_signed_t,
60 );
61 pub fn nmod_poly_factor_equal_deg_prob(
62 factor: *mut nmod_poly_struct,
63 state: *mut flint_rand_s,
64 pol: *mut nmod_poly_struct,
65 d: mp_limb_signed_t,
66 ) -> ::std::os::raw::c_int;
67 pub fn nmod_poly_factor_distinct_deg(
68 res: *mut nmod_poly_factor_struct,
69 poly: *mut nmod_poly_struct,
70 degs: *const *mut mp_limb_signed_t,
71 );
72 pub fn nmod_poly_remove(f: *mut nmod_poly_struct, p: *mut nmod_poly_struct) -> mp_limb_t;
73 pub fn nmod_poly_factor_distinct_deg_threaded(
74 res: *mut nmod_poly_factor_struct,
75 poly: *mut nmod_poly_struct,
76 degs: *const *mut mp_limb_signed_t,
77 );
78 pub fn nmod_poly_is_irreducible(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
79 pub fn nmod_poly_is_irreducible_rabin(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
80 pub fn nmod_poly_is_irreducible_ddf(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
81 pub fn _nmod_poly_is_squarefree(
82 f: mp_srcptr,
83 len: mp_limb_signed_t,
84 mod_: nmod_t,
85 ) -> ::std::os::raw::c_int;
86 pub fn nmod_poly_is_squarefree(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
87 pub fn nmod_poly_factor_cantor_zassenhaus(
88 res: *mut nmod_poly_factor_struct,
89 f: *mut nmod_poly_struct,
90 );
91 pub fn nmod_poly_factor_berlekamp(
92 factors: *mut nmod_poly_factor_struct,
93 f: *mut nmod_poly_struct,
94 );
95 pub fn nmod_poly_factor_kaltofen_shoup(
96 res: *mut nmod_poly_factor_struct,
97 poly: *mut nmod_poly_struct,
98 );
99 pub fn nmod_poly_factor_squarefree(res: *mut nmod_poly_factor_struct, f: *mut nmod_poly_struct);
100 pub fn nmod_poly_factor_with_berlekamp(
101 result: *mut nmod_poly_factor_struct,
102 input: *mut nmod_poly_struct,
103 ) -> mp_limb_t;
104 pub fn nmod_poly_factor_with_cantor_zassenhaus(
105 result: *mut nmod_poly_factor_struct,
106 input: *mut nmod_poly_struct,
107 ) -> mp_limb_t;
108 pub fn nmod_poly_factor_with_kaltofen_shoup(
109 result: *mut nmod_poly_factor_struct,
110 input: *mut nmod_poly_struct,
111 ) -> mp_limb_t;
112 pub fn nmod_poly_factor(
113 result: *mut nmod_poly_factor_struct,
114 input: *mut nmod_poly_struct,
115 ) -> mp_limb_t;
116 pub fn _nmod_poly_interval_poly_worker(arg_ptr: *mut ::std::os::raw::c_void);
117 pub fn nmod_poly_roots(
118 r: *mut nmod_poly_factor_struct,
119 f: *mut nmod_poly_struct,
120 with_multiplicity: ::std::os::raw::c_int,
121 );
122 pub fn nmod_poly_roots_factored(
123 r: *mut nmod_poly_factor_struct,
124 f: *mut nmod_poly_struct,
125 with_multiplicity: ::std::os::raw::c_int,
126 n: *const n_factor_t,
127 ) -> ::std::os::raw::c_int;
128 pub fn nmod_poly_factor_get_nmod_poly(
129 z: *mut nmod_poly_struct,
130 fac: *mut nmod_poly_factor_struct,
131 i: mp_limb_signed_t,
132 );
133}