flint_sys/
nmod_poly_factor.rs1use crate::deps::*;
4use crate::flint::*;
5use crate::limb_types::*;
6use crate::nmod_types::*;
7
8
9#[repr(C)]
10pub struct nmod_poly_interval_poly_arg_t {
11 pub baby: *mut nmod_poly_struct,
12 pub res: *mut nmod_poly_struct,
13 pub H: *mut nmod_poly_struct,
14 pub v: *mut nmod_poly_struct,
15 pub vinv: *mut nmod_poly_struct,
16 pub tmp: nn_ptr,
17 pub m: slong,
18}
19#[allow(clippy::unnecessary_operation, clippy::identity_op)]
20const _: () = {
21 ["Size of nmod_poly_interval_poly_arg_t"]
22 [::std::mem::size_of::<nmod_poly_interval_poly_arg_t>() - 56usize];
23 ["Alignment of nmod_poly_interval_poly_arg_t"]
24 [::std::mem::align_of::<nmod_poly_interval_poly_arg_t>() - 8usize];
25 ["Offset of field: nmod_poly_interval_poly_arg_t::baby"]
26 [::std::mem::offset_of!(nmod_poly_interval_poly_arg_t, baby) - 0usize];
27 ["Offset of field: nmod_poly_interval_poly_arg_t::res"]
28 [::std::mem::offset_of!(nmod_poly_interval_poly_arg_t, res) - 8usize];
29 ["Offset of field: nmod_poly_interval_poly_arg_t::H"]
30 [::std::mem::offset_of!(nmod_poly_interval_poly_arg_t, H) - 16usize];
31 ["Offset of field: nmod_poly_interval_poly_arg_t::v"]
32 [::std::mem::offset_of!(nmod_poly_interval_poly_arg_t, v) - 24usize];
33 ["Offset of field: nmod_poly_interval_poly_arg_t::vinv"]
34 [::std::mem::offset_of!(nmod_poly_interval_poly_arg_t, vinv) - 32usize];
35 ["Offset of field: nmod_poly_interval_poly_arg_t::tmp"]
36 [::std::mem::offset_of!(nmod_poly_interval_poly_arg_t, tmp) - 40usize];
37 ["Offset of field: nmod_poly_interval_poly_arg_t::m"]
38 [::std::mem::offset_of!(nmod_poly_interval_poly_arg_t, m) - 48usize];
39};
40impl Default for nmod_poly_interval_poly_arg_t {
41 fn default() -> Self {
42 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
43 unsafe {
44 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
45 s.assume_init()
46 }
47 }
48}
49extern "C" {
50 pub fn nmod_poly_factor_init(fac: *mut nmod_poly_factor_struct);
51 pub fn nmod_poly_factor_clear(fac: *mut nmod_poly_factor_struct);
52 pub fn nmod_poly_factor_realloc(fac: *mut nmod_poly_factor_struct, alloc: slong);
53 pub fn nmod_poly_factor_fit_length(fac: *mut nmod_poly_factor_struct, len: slong);
54 pub fn nmod_poly_factor_set(
55 res: *mut nmod_poly_factor_struct,
56 fac: *const nmod_poly_factor_struct,
57 );
58 #[link_name = "nmod_poly_factor_swap__extern"]
59 pub fn nmod_poly_factor_swap(a: *mut nmod_poly_factor_struct, b: *mut nmod_poly_factor_struct);
60 pub fn nmod_poly_factor_get_poly(
61 a: *mut nmod_poly_struct,
62 b: *const nmod_poly_factor_struct,
63 i: slong,
64 );
65 pub fn nmod_poly_factor_insert(
66 fac: *mut nmod_poly_factor_struct,
67 poly: *const nmod_poly_struct,
68 exp: slong,
69 );
70 pub fn nmod_poly_factor_print(fac: *const nmod_poly_factor_struct);
71 pub fn nmod_poly_factor_print_pretty(
72 fac: *const nmod_poly_factor_struct,
73 var: *const libc::c_char,
74 );
75 pub fn nmod_poly_factor_concat(
76 res: *mut nmod_poly_factor_struct,
77 fac: *const nmod_poly_factor_struct,
78 );
79 pub fn nmod_poly_factor_pow(fac: *mut nmod_poly_factor_struct, exp: slong);
80 pub fn nmod_poly_factor_equal_deg(
81 factors: *mut nmod_poly_factor_struct,
82 pol: *const nmod_poly_struct,
83 d: slong,
84 );
85 pub fn nmod_poly_factor_equal_deg_prob(
86 factor: *mut nmod_poly_struct,
87 state: *mut flint_rand_struct,
88 pol: *const nmod_poly_struct,
89 d: slong,
90 ) -> libc::c_int;
91 pub fn nmod_poly_factor_distinct_deg(
92 res: *mut nmod_poly_factor_struct,
93 poly: *const nmod_poly_struct,
94 degs: *const *mut slong,
95 );
96 pub fn nmod_poly_factor_distinct_deg_threaded(
97 res: *mut nmod_poly_factor_struct,
98 poly: *const nmod_poly_struct,
99 degs: *const *mut slong,
100 );
101 pub fn nmod_poly_is_irreducible(f: *const nmod_poly_struct) -> libc::c_int;
102 pub fn nmod_poly_is_irreducible_rabin(f: *const nmod_poly_struct) -> libc::c_int;
103 pub fn nmod_poly_is_irreducible_ddf(f: *const nmod_poly_struct) -> libc::c_int;
104 pub fn _nmod_poly_is_squarefree(f: nn_srcptr, len: slong, mod_: nmod_t) -> libc::c_int;
105 pub fn nmod_poly_is_squarefree(f: *const nmod_poly_struct) -> libc::c_int;
106 pub fn nmod_poly_factor_cantor_zassenhaus(
107 res: *mut nmod_poly_factor_struct,
108 f: *const nmod_poly_struct,
109 );
110 pub fn nmod_poly_factor_berlekamp(
111 factors: *mut nmod_poly_factor_struct,
112 f: *const nmod_poly_struct,
113 );
114 pub fn nmod_poly_factor_kaltofen_shoup(
115 res: *mut nmod_poly_factor_struct,
116 poly: *const nmod_poly_struct,
117 );
118 pub fn nmod_poly_factor_squarefree(
119 res: *mut nmod_poly_factor_struct,
120 f: *const nmod_poly_struct,
121 );
122 pub fn nmod_poly_factor_with_berlekamp(
123 result: *mut nmod_poly_factor_struct,
124 input: *const nmod_poly_struct,
125 ) -> ulong;
126 pub fn nmod_poly_factor_with_cantor_zassenhaus(
127 result: *mut nmod_poly_factor_struct,
128 input: *const nmod_poly_struct,
129 ) -> ulong;
130 pub fn nmod_poly_factor_with_kaltofen_shoup(
131 result: *mut nmod_poly_factor_struct,
132 input: *const nmod_poly_struct,
133 ) -> ulong;
134 pub fn nmod_poly_factor(
135 result: *mut nmod_poly_factor_struct,
136 input: *const nmod_poly_struct,
137 ) -> ulong;
138 pub fn _nmod_poly_interval_poly_worker(arg_ptr: *mut libc::c_void);
139 pub fn nmod_poly_roots(
140 r: *mut nmod_poly_factor_struct,
141 f: *const nmod_poly_struct,
142 with_multiplicity: libc::c_int,
143 );
144 pub fn nmod_poly_roots_factored(
145 r: *mut nmod_poly_factor_struct,
146 f: *const nmod_poly_struct,
147 with_multiplicity: libc::c_int,
148 n: *const n_factor_t,
149 ) -> libc::c_int;
150}