1use libc::*;
4use crate::deps::*;
5use crate::flint::*;
6use crate::nmod_types::*;
7
8
9pub const NMOD_POLY_MULMOD_PRECOND_NONE: u32 = 0;
10pub const NMOD_POLY_MULMOD_PRECOND_SHOUP: u32 = 1;
11pub const NMOD_POLY_MULMOD_PRECOND_MATRIX: u32 = 2;
12#[repr(C)]
13pub struct nmod_poly_res_struct {
14 pub res: ulong,
15 pub lc: ulong,
16 pub len0: slong,
17 pub len1: slong,
18 pub off: slong,
19}
20#[allow(clippy::unnecessary_operation, clippy::identity_op)]
21const _: () = {
22 ["Size of nmod_poly_res_struct"][::std::mem::size_of::<nmod_poly_res_struct>() - 40usize];
23 ["Alignment of nmod_poly_res_struct"][::std::mem::align_of::<nmod_poly_res_struct>() - 8usize];
24 ["Offset of field: nmod_poly_res_struct::res"]
25 [::std::mem::offset_of!(nmod_poly_res_struct, res) - 0usize];
26 ["Offset of field: nmod_poly_res_struct::lc"]
27 [::std::mem::offset_of!(nmod_poly_res_struct, lc) - 8usize];
28 ["Offset of field: nmod_poly_res_struct::len0"]
29 [::std::mem::offset_of!(nmod_poly_res_struct, len0) - 16usize];
30 ["Offset of field: nmod_poly_res_struct::len1"]
31 [::std::mem::offset_of!(nmod_poly_res_struct, len1) - 24usize];
32 ["Offset of field: nmod_poly_res_struct::off"]
33 [::std::mem::offset_of!(nmod_poly_res_struct, off) - 32usize];
34};
35impl Default for nmod_poly_res_struct {
36 fn default() -> Self {
37 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
38 unsafe {
39 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
40 s.assume_init()
41 }
42 }
43}
44pub type nmod_poly_res_t = [nmod_poly_res_struct; 1usize];
45#[repr(C)]
46#[derive(Debug, Copy, Clone)]
47pub struct nmod_poly_matrix_precompute_arg_t {
48 pub A: *mut nmod_mat_struct,
49 pub poly1: *mut nmod_poly_struct,
50 pub poly2: *mut nmod_poly_struct,
51 pub poly2inv: *mut nmod_poly_struct,
52}
53#[allow(clippy::unnecessary_operation, clippy::identity_op)]
54const _: () = {
55 ["Size of nmod_poly_matrix_precompute_arg_t"]
56 [::std::mem::size_of::<nmod_poly_matrix_precompute_arg_t>() - 32usize];
57 ["Alignment of nmod_poly_matrix_precompute_arg_t"]
58 [::std::mem::align_of::<nmod_poly_matrix_precompute_arg_t>() - 8usize];
59 ["Offset of field: nmod_poly_matrix_precompute_arg_t::A"]
60 [::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, A) - 0usize];
61 ["Offset of field: nmod_poly_matrix_precompute_arg_t::poly1"]
62 [::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, poly1) - 8usize];
63 ["Offset of field: nmod_poly_matrix_precompute_arg_t::poly2"]
64 [::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, poly2) - 16usize];
65 ["Offset of field: nmod_poly_matrix_precompute_arg_t::poly2inv"]
66 [::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, poly2inv) - 24usize];
67};
68impl Default for nmod_poly_matrix_precompute_arg_t {
69 fn default() -> Self {
70 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
71 unsafe {
72 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
73 s.assume_init()
74 }
75 }
76}
77#[repr(C)]
78#[derive(Debug, Copy, Clone)]
79pub struct nmod_poly_compose_mod_precomp_preinv_arg_t {
80 pub A: *mut nmod_mat_struct,
81 pub res: *mut nmod_poly_struct,
82 pub poly1: *mut nmod_poly_struct,
83 pub poly3: *mut nmod_poly_struct,
84 pub poly3inv: *mut nmod_poly_struct,
85}
86#[allow(clippy::unnecessary_operation, clippy::identity_op)]
87const _: () = {
88 ["Size of nmod_poly_compose_mod_precomp_preinv_arg_t"]
89 [::std::mem::size_of::<nmod_poly_compose_mod_precomp_preinv_arg_t>() - 40usize];
90 ["Alignment of nmod_poly_compose_mod_precomp_preinv_arg_t"]
91 [::std::mem::align_of::<nmod_poly_compose_mod_precomp_preinv_arg_t>() - 8usize];
92 ["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::A"]
93 [::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, A) - 0usize];
94 ["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::res"]
95 [::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, res) - 8usize];
96 ["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::poly1"]
97 [::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, poly1) - 16usize];
98 ["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::poly3"]
99 [::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, poly3) - 24usize];
100 ["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::poly3inv"]
101 [::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, poly3inv) - 32usize];
102};
103impl Default for nmod_poly_compose_mod_precomp_preinv_arg_t {
104 fn default() -> Self {
105 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
106 unsafe {
107 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
108 s.assume_init()
109 }
110 }
111}
112#[repr(C)]
113pub struct nmod_geometric_progression_struct {
114 pub x: nn_ptr,
115 pub t: nn_ptr,
116 pub w: nn_ptr,
117 pub y: nn_ptr,
118 pub z: nn_ptr,
119 pub f: nmod_poly_t,
120 pub g1: nmod_poly_t,
121 pub g2: nmod_poly_t,
122 pub mod_: nmod_t,
123 pub len: slong,
124}
125#[allow(clippy::unnecessary_operation, clippy::identity_op)]
126const _: () = {
127 ["Size of nmod_geometric_progression_struct"]
128 [::std::mem::size_of::<nmod_geometric_progression_struct>() - 216usize];
129 ["Alignment of nmod_geometric_progression_struct"]
130 [::std::mem::align_of::<nmod_geometric_progression_struct>() - 8usize];
131 ["Offset of field: nmod_geometric_progression_struct::x"]
132 [::std::mem::offset_of!(nmod_geometric_progression_struct, x) - 0usize];
133 ["Offset of field: nmod_geometric_progression_struct::t"]
134 [::std::mem::offset_of!(nmod_geometric_progression_struct, t) - 8usize];
135 ["Offset of field: nmod_geometric_progression_struct::w"]
136 [::std::mem::offset_of!(nmod_geometric_progression_struct, w) - 16usize];
137 ["Offset of field: nmod_geometric_progression_struct::y"]
138 [::std::mem::offset_of!(nmod_geometric_progression_struct, y) - 24usize];
139 ["Offset of field: nmod_geometric_progression_struct::z"]
140 [::std::mem::offset_of!(nmod_geometric_progression_struct, z) - 32usize];
141 ["Offset of field: nmod_geometric_progression_struct::f"]
142 [::std::mem::offset_of!(nmod_geometric_progression_struct, f) - 40usize];
143 ["Offset of field: nmod_geometric_progression_struct::g1"]
144 [::std::mem::offset_of!(nmod_geometric_progression_struct, g1) - 88usize];
145 ["Offset of field: nmod_geometric_progression_struct::g2"]
146 [::std::mem::offset_of!(nmod_geometric_progression_struct, g2) - 136usize];
147 ["Offset of field: nmod_geometric_progression_struct::mod_"]
148 [::std::mem::offset_of!(nmod_geometric_progression_struct, mod_) - 184usize];
149 ["Offset of field: nmod_geometric_progression_struct::len"]
150 [::std::mem::offset_of!(nmod_geometric_progression_struct, len) - 208usize];
151};
152impl Default for nmod_geometric_progression_struct {
153 fn default() -> Self {
154 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
155 unsafe {
156 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
157 s.assume_init()
158 }
159 }
160}
161pub type nmod_geometric_progression_t = [nmod_geometric_progression_struct; 1usize];
162#[repr(C)]
163pub struct nmod_poly_mulmod_precond_struct {
164 pub method: libc::c_int,
165 pub n: slong,
166 pub a: nn_srcptr,
167 pub alen: slong,
168 pub d: nn_srcptr,
169 pub dinv: nn_srcptr,
170 pub lendinv: slong,
171 pub adivd: nn_ptr,
172 pub matrix: nn_ptr,
173 pub packing: libc::c_int,
174 pub dot_params: dot_params_t,
175}
176#[allow(clippy::unnecessary_operation, clippy::identity_op)]
177const _: () = {
178 ["Size of nmod_poly_mulmod_precond_struct"]
179 [::std::mem::size_of::<nmod_poly_mulmod_precond_struct>() - 96usize];
180 ["Alignment of nmod_poly_mulmod_precond_struct"]
181 [::std::mem::align_of::<nmod_poly_mulmod_precond_struct>() - 8usize];
182 ["Offset of field: nmod_poly_mulmod_precond_struct::method"]
183 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, method) - 0usize];
184 ["Offset of field: nmod_poly_mulmod_precond_struct::n"]
185 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, n) - 8usize];
186 ["Offset of field: nmod_poly_mulmod_precond_struct::a"]
187 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, a) - 16usize];
188 ["Offset of field: nmod_poly_mulmod_precond_struct::alen"]
189 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, alen) - 24usize];
190 ["Offset of field: nmod_poly_mulmod_precond_struct::d"]
191 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, d) - 32usize];
192 ["Offset of field: nmod_poly_mulmod_precond_struct::dinv"]
193 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, dinv) - 40usize];
194 ["Offset of field: nmod_poly_mulmod_precond_struct::lendinv"]
195 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, lendinv) - 48usize];
196 ["Offset of field: nmod_poly_mulmod_precond_struct::adivd"]
197 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, adivd) - 56usize];
198 ["Offset of field: nmod_poly_mulmod_precond_struct::matrix"]
199 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, matrix) - 64usize];
200 ["Offset of field: nmod_poly_mulmod_precond_struct::packing"]
201 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, packing) - 72usize];
202 ["Offset of field: nmod_poly_mulmod_precond_struct::dot_params"]
203 [::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, dot_params) - 80usize];
204};
205impl Default for nmod_poly_mulmod_precond_struct {
206 fn default() -> Self {
207 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
208 unsafe {
209 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
210 s.assume_init()
211 }
212 }
213}
214pub type nmod_poly_mulmod_precond_t = [nmod_poly_mulmod_precond_struct; 1usize];
215#[repr(C)]
216pub struct _nmod_poly_multi_crt_prog_instr {
217 pub a_idx: slong,
218 pub b_idx: slong,
219 pub c_idx: slong,
220 pub idem: nmod_poly_t,
221 pub modulus: nmod_poly_t,
222}
223#[allow(clippy::unnecessary_operation, clippy::identity_op)]
224const _: () = {
225 ["Size of _nmod_poly_multi_crt_prog_instr"]
226 [::std::mem::size_of::<_nmod_poly_multi_crt_prog_instr>() - 120usize];
227 ["Alignment of _nmod_poly_multi_crt_prog_instr"]
228 [::std::mem::align_of::<_nmod_poly_multi_crt_prog_instr>() - 8usize];
229 ["Offset of field: _nmod_poly_multi_crt_prog_instr::a_idx"]
230 [::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, a_idx) - 0usize];
231 ["Offset of field: _nmod_poly_multi_crt_prog_instr::b_idx"]
232 [::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, b_idx) - 8usize];
233 ["Offset of field: _nmod_poly_multi_crt_prog_instr::c_idx"]
234 [::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, c_idx) - 16usize];
235 ["Offset of field: _nmod_poly_multi_crt_prog_instr::idem"]
236 [::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, idem) - 24usize];
237 ["Offset of field: _nmod_poly_multi_crt_prog_instr::modulus"]
238 [::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, modulus) - 72usize];
239};
240impl Default for _nmod_poly_multi_crt_prog_instr {
241 fn default() -> Self {
242 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
243 unsafe {
244 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
245 s.assume_init()
246 }
247 }
248}
249#[repr(C)]
250pub struct nmod_poly_multi_crt_struct {
251 pub prog: *mut _nmod_poly_multi_crt_prog_instr,
252 pub length: slong,
253 pub alloc: slong,
254 pub localsize: slong,
255 pub temp1loc: slong,
256 pub temp2loc: slong,
257 pub good: libc::c_int,
258}
259#[allow(clippy::unnecessary_operation, clippy::identity_op)]
260const _: () = {
261 ["Size of nmod_poly_multi_crt_struct"]
262 [::std::mem::size_of::<nmod_poly_multi_crt_struct>() - 56usize];
263 ["Alignment of nmod_poly_multi_crt_struct"]
264 [::std::mem::align_of::<nmod_poly_multi_crt_struct>() - 8usize];
265 ["Offset of field: nmod_poly_multi_crt_struct::prog"]
266 [::std::mem::offset_of!(nmod_poly_multi_crt_struct, prog) - 0usize];
267 ["Offset of field: nmod_poly_multi_crt_struct::length"]
268 [::std::mem::offset_of!(nmod_poly_multi_crt_struct, length) - 8usize];
269 ["Offset of field: nmod_poly_multi_crt_struct::alloc"]
270 [::std::mem::offset_of!(nmod_poly_multi_crt_struct, alloc) - 16usize];
271 ["Offset of field: nmod_poly_multi_crt_struct::localsize"]
272 [::std::mem::offset_of!(nmod_poly_multi_crt_struct, localsize) - 24usize];
273 ["Offset of field: nmod_poly_multi_crt_struct::temp1loc"]
274 [::std::mem::offset_of!(nmod_poly_multi_crt_struct, temp1loc) - 32usize];
275 ["Offset of field: nmod_poly_multi_crt_struct::temp2loc"]
276 [::std::mem::offset_of!(nmod_poly_multi_crt_struct, temp2loc) - 40usize];
277 ["Offset of field: nmod_poly_multi_crt_struct::good"]
278 [::std::mem::offset_of!(nmod_poly_multi_crt_struct, good) - 48usize];
279};
280impl Default for nmod_poly_multi_crt_struct {
281 fn default() -> Self {
282 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
283 unsafe {
284 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
285 s.assume_init()
286 }
287 }
288}
289pub type nmod_poly_multi_crt_t = [nmod_poly_multi_crt_struct; 1usize];
290#[repr(C)]
291pub struct nmod_berlekamp_massey_struct {
292 pub npoints: slong,
293 pub R0: nmod_poly_t,
294 pub R1: nmod_poly_t,
295 pub V0: nmod_poly_t,
296 pub V1: nmod_poly_t,
297 pub qt: nmod_poly_t,
298 pub rt: nmod_poly_t,
299 pub points: nmod_poly_t,
300}
301#[allow(clippy::unnecessary_operation, clippy::identity_op)]
302const _: () = {
303 ["Size of nmod_berlekamp_massey_struct"]
304 [::std::mem::size_of::<nmod_berlekamp_massey_struct>() - 344usize];
305 ["Alignment of nmod_berlekamp_massey_struct"]
306 [::std::mem::align_of::<nmod_berlekamp_massey_struct>() - 8usize];
307 ["Offset of field: nmod_berlekamp_massey_struct::npoints"]
308 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, npoints) - 0usize];
309 ["Offset of field: nmod_berlekamp_massey_struct::R0"]
310 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, R0) - 8usize];
311 ["Offset of field: nmod_berlekamp_massey_struct::R1"]
312 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, R1) - 56usize];
313 ["Offset of field: nmod_berlekamp_massey_struct::V0"]
314 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, V0) - 104usize];
315 ["Offset of field: nmod_berlekamp_massey_struct::V1"]
316 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, V1) - 152usize];
317 ["Offset of field: nmod_berlekamp_massey_struct::qt"]
318 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, qt) - 200usize];
319 ["Offset of field: nmod_berlekamp_massey_struct::rt"]
320 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, rt) - 248usize];
321 ["Offset of field: nmod_berlekamp_massey_struct::points"]
322 [::std::mem::offset_of!(nmod_berlekamp_massey_struct, points) - 296usize];
323};
324impl Default for nmod_berlekamp_massey_struct {
325 fn default() -> Self {
326 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
327 unsafe {
328 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
329 s.assume_init()
330 }
331 }
332}
333pub type nmod_berlekamp_massey_t = [nmod_berlekamp_massey_struct; 1usize];
334extern "C" {
335 pub fn nmod_poly_init(poly: *mut nmod_poly_struct, n: ulong);
336 pub fn nmod_poly_init_preinv(poly: *mut nmod_poly_struct, n: ulong, ninv: ulong);
337 pub fn nmod_poly_init2(poly: *mut nmod_poly_struct, n: ulong, alloc: slong);
338 pub fn nmod_poly_init2_preinv(poly: *mut nmod_poly_struct, n: ulong, ninv: ulong, alloc: slong);
339 pub fn nmod_poly_realloc(poly: *mut nmod_poly_struct, alloc: slong);
340 pub fn nmod_poly_clear(poly: *mut nmod_poly_struct);
341 pub fn nmod_poly_fit_length(poly: *mut nmod_poly_struct, alloc: slong);
342 #[link_name = "nmod_poly_init_mod__extern"]
343 pub fn nmod_poly_init_mod(poly: *mut nmod_poly_struct, mod_: nmod_t);
344 #[link_name = "nmod_poly_set_mod__extern"]
345 pub fn nmod_poly_set_mod(poly: *mut nmod_poly_struct, mod_: nmod_t);
346 #[link_name = "_nmod_poly_set_length__extern"]
347 pub fn _nmod_poly_set_length(poly: *mut nmod_poly_struct, len: slong);
348 #[link_name = "_nmod_poly_normalise__extern"]
349 pub fn _nmod_poly_normalise(poly: *mut nmod_poly_struct);
350 #[link_name = "nmod_poly_length__extern"]
351 pub fn nmod_poly_length(poly: *const nmod_poly_struct) -> slong;
352 #[link_name = "nmod_poly_degree__extern"]
353 pub fn nmod_poly_degree(poly: *const nmod_poly_struct) -> slong;
354 #[link_name = "nmod_poly_modulus__extern"]
355 pub fn nmod_poly_modulus(poly: *const nmod_poly_struct) -> ulong;
356 pub fn nmod_poly_max_bits(poly: *const nmod_poly_struct) -> flint_bitcnt_t;
357 #[link_name = "nmod_poly_lead__extern"]
358 pub fn nmod_poly_lead(poly: *const nmod_poly_struct) -> nn_ptr;
359 pub fn nmod_poly_set(a: *mut nmod_poly_struct, b: *const nmod_poly_struct);
360 #[link_name = "nmod_poly_swap__extern"]
361 pub fn nmod_poly_swap(poly1: *mut nmod_poly_struct, poly2: *mut nmod_poly_struct);
362 #[link_name = "nmod_poly_zero__extern"]
363 pub fn nmod_poly_zero(res: *mut nmod_poly_struct);
364 #[link_name = "nmod_poly_one__extern"]
365 pub fn nmod_poly_one(res: *mut nmod_poly_struct);
366 pub fn nmod_poly_set_trunc(
367 res: *mut nmod_poly_struct,
368 poly: *const nmod_poly_struct,
369 len: slong,
370 );
371 #[link_name = "nmod_poly_truncate__extern"]
372 pub fn nmod_poly_truncate(poly: *mut nmod_poly_struct, len: slong);
373 pub fn _nmod_poly_reverse(output: nn_ptr, input: nn_srcptr, len: slong, m: slong);
374 pub fn nmod_poly_reverse(
375 output: *mut nmod_poly_struct,
376 input: *const nmod_poly_struct,
377 m: slong,
378 );
379 pub fn nmod_poly_equal(a: *const nmod_poly_struct, b: *const nmod_poly_struct) -> libc::c_int;
380 pub fn nmod_poly_equal_nmod(poly: *const nmod_poly_struct, cst: ulong) -> libc::c_int;
381 pub fn nmod_poly_equal_ui(poly: *const nmod_poly_struct, cst: ulong) -> libc::c_int;
382 pub fn nmod_poly_equal_trunc(
383 poly1: *const nmod_poly_struct,
384 poly2: *const nmod_poly_struct,
385 n: slong,
386 ) -> libc::c_int;
387 #[link_name = "nmod_poly_is_zero__extern"]
388 pub fn nmod_poly_is_zero(poly: *const nmod_poly_struct) -> libc::c_int;
389 #[link_name = "nmod_poly_is_one__extern"]
390 pub fn nmod_poly_is_one(poly: *const nmod_poly_struct) -> libc::c_int;
391 #[link_name = "nmod_poly_is_unit__extern"]
392 pub fn nmod_poly_is_unit(poly: *const nmod_poly_struct) -> libc::c_int;
393 #[link_name = "nmod_poly_is_gen__extern"]
394 pub fn nmod_poly_is_gen(poly: *const nmod_poly_struct) -> libc::c_int;
395 #[link_name = "nmod_poly_is_monic__extern"]
396 pub fn nmod_poly_is_monic(poly: *const nmod_poly_struct) -> libc::c_int;
397 pub fn nmod_poly_randtest(
398 poly: *mut nmod_poly_struct,
399 state: *mut flint_rand_struct,
400 len: slong,
401 );
402 #[link_name = "nmod_poly_randtest_not_zero__extern"]
403 pub fn nmod_poly_randtest_not_zero(
404 poly: *mut nmod_poly_struct,
405 state: *mut flint_rand_struct,
406 len: slong,
407 );
408 pub fn nmod_poly_minimal_irreducible(res: *mut nmod_poly_struct, n: ulong);
409 pub fn nmod_poly_randtest_irreducible(
410 poly: *mut nmod_poly_struct,
411 state: *mut flint_rand_struct,
412 len: slong,
413 );
414 pub fn nmod_poly_randtest_monic(
415 poly: *mut nmod_poly_struct,
416 state: *mut flint_rand_struct,
417 len: slong,
418 );
419 pub fn nmod_poly_randtest_monic_irreducible(
420 poly: *mut nmod_poly_struct,
421 state: *mut flint_rand_struct,
422 len: slong,
423 );
424 pub fn nmod_poly_randtest_monic_primitive(
425 poly: *mut nmod_poly_struct,
426 state: *mut flint_rand_struct,
427 len: slong,
428 );
429 pub fn nmod_poly_randtest_trinomial(
430 poly: *mut nmod_poly_struct,
431 state: *mut flint_rand_struct,
432 len: slong,
433 );
434 pub fn nmod_poly_randtest_trinomial_irreducible(
435 poly: *mut nmod_poly_struct,
436 state: *mut flint_rand_struct,
437 len: slong,
438 max_attempts: slong,
439 ) -> libc::c_int;
440 pub fn nmod_poly_randtest_pentomial(
441 poly: *mut nmod_poly_struct,
442 state: *mut flint_rand_struct,
443 len: slong,
444 );
445 pub fn nmod_poly_randtest_pentomial_irreducible(
446 poly: *mut nmod_poly_struct,
447 state: *mut flint_rand_struct,
448 len: slong,
449 max_attempts: slong,
450 ) -> libc::c_int;
451 pub fn nmod_poly_randtest_sparse_irreducible(
452 poly: *mut nmod_poly_struct,
453 state: *mut flint_rand_struct,
454 len: slong,
455 );
456 #[link_name = "nmod_poly_get_coeff_ui__extern"]
457 pub fn nmod_poly_get_coeff_ui(poly: *const nmod_poly_struct, j: slong) -> ulong;
458 pub fn nmod_poly_set_coeff_ui(poly: *mut nmod_poly_struct, j: slong, c: ulong);
459 pub fn nmod_poly_get_str(poly: *const nmod_poly_struct) -> *mut libc::c_char;
460 pub fn nmod_poly_get_str_pretty(
461 poly: *const nmod_poly_struct,
462 x: *const libc::c_char,
463 ) -> *mut libc::c_char;
464 pub fn nmod_poly_set_str(poly: *mut nmod_poly_struct, s: *const libc::c_char) -> libc::c_int;
465 pub fn nmod_poly_fprint(f: *mut FILE, poly: *const nmod_poly_struct) -> libc::c_int;
466 pub fn nmod_poly_fprint_pretty(
467 f: *mut FILE,
468 a: *const nmod_poly_struct,
469 x: *const libc::c_char,
470 ) -> libc::c_int;
471 pub fn nmod_poly_fread(f: *mut FILE, poly: *mut nmod_poly_struct) -> libc::c_int;
472 pub fn nmod_poly_print(a: *const nmod_poly_struct) -> libc::c_int;
473 pub fn nmod_poly_print_pretty(
474 a: *const nmod_poly_struct,
475 x: *const libc::c_char,
476 ) -> libc::c_int;
477 pub fn nmod_poly_read(poly: *mut nmod_poly_struct) -> libc::c_int;
478 pub fn _nmod_poly_shift_left(res: nn_ptr, poly: nn_srcptr, len: slong, k: slong);
479 pub fn nmod_poly_shift_left(
480 res: *mut nmod_poly_struct,
481 poly: *const nmod_poly_struct,
482 k: slong,
483 );
484 pub fn _nmod_poly_shift_right(res: nn_ptr, poly: nn_srcptr, len: slong, k: slong);
485 pub fn nmod_poly_shift_right(
486 res: *mut nmod_poly_struct,
487 poly: *const nmod_poly_struct,
488 k: slong,
489 );
490 pub fn _nmod_poly_add(
491 res: nn_ptr,
492 poly1: nn_srcptr,
493 len1: slong,
494 poly2: nn_srcptr,
495 len2: slong,
496 mod_: nmod_t,
497 );
498 pub fn nmod_poly_add(
499 res: *mut nmod_poly_struct,
500 poly1: *const nmod_poly_struct,
501 poly2: *const nmod_poly_struct,
502 );
503 pub fn _nmod_poly_sub(
504 res: nn_ptr,
505 poly1: nn_srcptr,
506 len1: slong,
507 poly2: nn_srcptr,
508 len2: slong,
509 mod_: nmod_t,
510 );
511 pub fn nmod_poly_sub(
512 res: *mut nmod_poly_struct,
513 poly1: *const nmod_poly_struct,
514 poly2: *const nmod_poly_struct,
515 );
516 pub fn nmod_poly_add_series(
517 res: *mut nmod_poly_struct,
518 poly1: *const nmod_poly_struct,
519 poly2: *const nmod_poly_struct,
520 n: slong,
521 );
522 pub fn nmod_poly_sub_series(
523 res: *mut nmod_poly_struct,
524 poly1: *const nmod_poly_struct,
525 poly2: *const nmod_poly_struct,
526 n: slong,
527 );
528 pub fn nmod_poly_add_ui(res: *mut nmod_poly_struct, poly: *const nmod_poly_struct, c: ulong);
529 pub fn nmod_poly_sub_ui(res: *mut nmod_poly_struct, poly: *const nmod_poly_struct, c: ulong);
530 pub fn nmod_poly_neg(res: *mut nmod_poly_struct, poly1: *const nmod_poly_struct);
531 pub fn nmod_poly_scalar_mul_nmod(
532 res: *mut nmod_poly_struct,
533 poly: *const nmod_poly_struct,
534 c: ulong,
535 );
536 pub fn nmod_poly_scalar_addmul_nmod(
537 res: *mut nmod_poly_struct,
538 poly: *const nmod_poly_struct,
539 c: ulong,
540 );
541 pub fn _nmod_poly_make_monic(output: nn_ptr, input: nn_srcptr, len: slong, mod_: nmod_t);
542 pub fn nmod_poly_make_monic(output: *mut nmod_poly_struct, input: *const nmod_poly_struct);
543 pub fn _nmod_poly_KS2_pack1(
544 res: nn_ptr,
545 op: nn_srcptr,
546 n: slong,
547 s: slong,
548 b: ulong,
549 k: ulong,
550 r: slong,
551 );
552 pub fn _nmod_poly_KS2_pack(
553 res: nn_ptr,
554 op: nn_srcptr,
555 n: slong,
556 s: slong,
557 b: ulong,
558 k: ulong,
559 r: slong,
560 );
561 pub fn _nmod_poly_KS2_unpack1(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
562 pub fn _nmod_poly_KS2_unpack2(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
563 pub fn _nmod_poly_KS2_unpack3(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
564 pub fn _nmod_poly_KS2_unpack(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
565 pub fn _nmod_poly_KS2_reduce(
566 res: nn_ptr,
567 s: slong,
568 op: nn_srcptr,
569 n: slong,
570 w: ulong,
571 mod_: nmod_t,
572 );
573 pub fn _nmod_poly_KS2_recover_reduce1(
574 res: nn_ptr,
575 s: slong,
576 op1: nn_srcptr,
577 op2: nn_srcptr,
578 n: slong,
579 b: ulong,
580 mod_: nmod_t,
581 );
582 pub fn _nmod_poly_KS2_recover_reduce2(
583 res: nn_ptr,
584 s: slong,
585 op1: nn_srcptr,
586 op2: nn_srcptr,
587 n: slong,
588 b: ulong,
589 mod_: nmod_t,
590 );
591 pub fn _nmod_poly_KS2_recover_reduce2b(
592 res: nn_ptr,
593 s: slong,
594 op1: nn_srcptr,
595 op2: nn_srcptr,
596 n: slong,
597 UNUSED_b: ulong,
598 mod_: nmod_t,
599 );
600 pub fn _nmod_poly_KS2_recover_reduce3(
601 res: nn_ptr,
602 s: slong,
603 op1: nn_srcptr,
604 op2: nn_srcptr,
605 n: slong,
606 b: ulong,
607 mod_: nmod_t,
608 );
609 pub fn _nmod_poly_KS2_recover_reduce(
610 res: nn_ptr,
611 s: slong,
612 op1: nn_srcptr,
613 op2: nn_srcptr,
614 n: slong,
615 b: ulong,
616 mod_: nmod_t,
617 );
618 pub fn _nmod_poly_bit_pack(res: nn_ptr, poly: nn_srcptr, len: slong, bits: flint_bitcnt_t);
619 pub fn nmod_poly_bit_pack(
620 f: *mut fmpz,
621 poly: *const nmod_poly_struct,
622 bit_size: flint_bitcnt_t,
623 );
624 pub fn _nmod_poly_bit_unpack(
625 res: nn_ptr,
626 nlo: slong,
627 nhi: slong,
628 mpn: nn_srcptr,
629 bits: flint_bitcnt_t,
630 mod_: nmod_t,
631 );
632 pub fn nmod_poly_bit_unpack(
633 poly: *mut nmod_poly_struct,
634 f: *const fmpz,
635 bit_size: flint_bitcnt_t,
636 );
637 pub fn _nmod_poly_mul_classical(
638 res: nn_ptr,
639 poly1: nn_srcptr,
640 len1: slong,
641 poly2: nn_srcptr,
642 len2: slong,
643 mod_: nmod_t,
644 );
645 pub fn nmod_poly_mul_classical(
646 res: *mut nmod_poly_struct,
647 poly1: *const nmod_poly_struct,
648 poly2: *const nmod_poly_struct,
649 );
650 pub fn _nmod_poly_mullow_classical(
651 res: nn_ptr,
652 poly1: nn_srcptr,
653 len1: slong,
654 poly2: nn_srcptr,
655 len2: slong,
656 trunc: slong,
657 mod_: nmod_t,
658 );
659 pub fn nmod_poly_mullow_classical(
660 res: *mut nmod_poly_struct,
661 poly1: *const nmod_poly_struct,
662 poly2: *const nmod_poly_struct,
663 trunc: slong,
664 );
665 pub fn _nmod_poly_mulhigh_classical(
666 res: nn_ptr,
667 poly1: nn_srcptr,
668 len1: slong,
669 poly2: nn_srcptr,
670 len2: slong,
671 start: slong,
672 mod_: nmod_t,
673 );
674 pub fn nmod_poly_mulhigh_classical(
675 res: *mut nmod_poly_struct,
676 poly1: *const nmod_poly_struct,
677 poly2: *const nmod_poly_struct,
678 start: slong,
679 );
680 pub fn _nmod_poly_mul_KS(
681 out: nn_ptr,
682 in1: nn_srcptr,
683 len1: slong,
684 in2: nn_srcptr,
685 len2: slong,
686 mod_: nmod_t,
687 );
688 pub fn nmod_poly_mul_KS(
689 res: *mut nmod_poly_struct,
690 poly1: *const nmod_poly_struct,
691 poly2: *const nmod_poly_struct,
692 );
693 pub fn _nmod_poly_mul_KS2(
694 res: nn_ptr,
695 op1: nn_srcptr,
696 n1: slong,
697 op2: nn_srcptr,
698 n2: slong,
699 mod_: nmod_t,
700 );
701 pub fn nmod_poly_mul_KS2(
702 res: *mut nmod_poly_struct,
703 poly1: *const nmod_poly_struct,
704 poly2: *const nmod_poly_struct,
705 );
706 pub fn _nmod_poly_mul_KS4(
707 res: nn_ptr,
708 op1: nn_srcptr,
709 n1: slong,
710 op2: nn_srcptr,
711 n2: slong,
712 mod_: nmod_t,
713 );
714 pub fn nmod_poly_mul_KS4(
715 res: *mut nmod_poly_struct,
716 poly1: *const nmod_poly_struct,
717 poly2: *const nmod_poly_struct,
718 );
719 pub fn _nmod_poly_mullow_KS(
720 out: nn_ptr,
721 in1: nn_srcptr,
722 len1: slong,
723 in2: nn_srcptr,
724 len2: slong,
725 n: slong,
726 mod_: nmod_t,
727 );
728 pub fn nmod_poly_mullow_KS(
729 res: *mut nmod_poly_struct,
730 poly1: *const nmod_poly_struct,
731 poly2: *const nmod_poly_struct,
732 n: slong,
733 );
734 pub fn _nmod_poly_mul(
735 res: nn_ptr,
736 poly1: nn_srcptr,
737 len1: slong,
738 poly2: nn_srcptr,
739 len2: slong,
740 mod_: nmod_t,
741 );
742 pub fn nmod_poly_mul(
743 res: *mut nmod_poly_struct,
744 poly1: *const nmod_poly_struct,
745 poly2: *const nmod_poly_struct,
746 );
747 pub fn _nmod_poly_mulmid_fft_small_repack(
748 z: nn_ptr,
749 a: nn_srcptr,
750 an: slong,
751 b: nn_srcptr,
752 bn: slong,
753 znlo: slong,
754 zn: slong,
755 mod_: nmod_t,
756 ) -> libc::c_int;
757 pub fn _nmod_poly_mullow_want_fft_small(
758 len1: slong,
759 len2: slong,
760 n: slong,
761 squaring: libc::c_int,
762 mod_: nmod_t,
763 ) -> libc::c_int;
764 pub fn _nmod_poly_mulmid_fft_small(
765 z: nn_ptr,
766 a: nn_srcptr,
767 an: slong,
768 b: nn_srcptr,
769 bn: slong,
770 znlo: slong,
771 zn: slong,
772 mod_: nmod_t,
773 );
774 pub fn _nmod_poly_mullow_fft_small(
775 z: nn_ptr,
776 a: nn_srcptr,
777 an: slong,
778 b: nn_srcptr,
779 bn: slong,
780 zn: slong,
781 mod_: nmod_t,
782 );
783 pub fn _nmod_poly_mullow(
784 res: nn_ptr,
785 poly1: nn_srcptr,
786 len1: slong,
787 poly2: nn_srcptr,
788 len2: slong,
789 trunc: slong,
790 mod_: nmod_t,
791 );
792 pub fn nmod_poly_mullow(
793 res: *mut nmod_poly_struct,
794 poly1: *const nmod_poly_struct,
795 poly2: *const nmod_poly_struct,
796 trunc: slong,
797 );
798 pub fn _nmod_poly_mulmid_classical(
799 res: nn_ptr,
800 poly1: nn_srcptr,
801 len1: slong,
802 poly2: nn_srcptr,
803 len2: slong,
804 nlo: slong,
805 nhi: slong,
806 mod_: nmod_t,
807 );
808 pub fn nmod_poly_mulmid_classical(
809 res: *mut nmod_poly_struct,
810 poly1: *const nmod_poly_struct,
811 poly2: *const nmod_poly_struct,
812 nlo: slong,
813 nhi: slong,
814 );
815 pub fn _nmod_poly_mulmid_KS(
816 res: nn_ptr,
817 poly1: nn_srcptr,
818 len1: slong,
819 poly2: nn_srcptr,
820 len2: slong,
821 nlo: slong,
822 nhi: slong,
823 mod_: nmod_t,
824 );
825 pub fn nmod_poly_mulmid_KS(
826 res: *mut nmod_poly_struct,
827 poly1: *const nmod_poly_struct,
828 poly2: *const nmod_poly_struct,
829 nlo: slong,
830 nhi: slong,
831 );
832 pub fn _nmod_poly_mulmid(
833 res: nn_ptr,
834 poly1: nn_srcptr,
835 len1: slong,
836 poly2: nn_srcptr,
837 len2: slong,
838 nlo: slong,
839 nhi: slong,
840 mod_: nmod_t,
841 );
842 pub fn nmod_poly_mulmid(
843 res: *mut nmod_poly_struct,
844 poly1: *const nmod_poly_struct,
845 poly2: *const nmod_poly_struct,
846 nlo: slong,
847 nhi: slong,
848 );
849 pub fn _nmod_poly_mulhigh(
850 res: nn_ptr,
851 poly1: nn_srcptr,
852 len1: slong,
853 poly2: nn_srcptr,
854 len2: slong,
855 n: slong,
856 mod_: nmod_t,
857 );
858 pub fn nmod_poly_mulhigh(
859 res: *mut nmod_poly_struct,
860 poly1: *const nmod_poly_struct,
861 poly2: *const nmod_poly_struct,
862 n: slong,
863 );
864 pub fn _nmod_poly_mulmod(
865 res: nn_ptr,
866 poly1: nn_srcptr,
867 len1: slong,
868 poly2: nn_srcptr,
869 len2: slong,
870 f: nn_srcptr,
871 lenf: slong,
872 mod_: nmod_t,
873 );
874 pub fn nmod_poly_mulmod(
875 res: *mut nmod_poly_struct,
876 poly1: *const nmod_poly_struct,
877 poly2: *const nmod_poly_struct,
878 f: *const nmod_poly_struct,
879 );
880 pub fn _nmod_poly_mulmod_preinv(
881 res: nn_ptr,
882 poly1: nn_srcptr,
883 len1: slong,
884 poly2: nn_srcptr,
885 len2: slong,
886 f: nn_srcptr,
887 lenf: slong,
888 finv: nn_srcptr,
889 lenfinv: slong,
890 mod_: nmod_t,
891 );
892 pub fn nmod_poly_mulmod_preinv(
893 res: *mut nmod_poly_struct,
894 poly1: *const nmod_poly_struct,
895 poly2: *const nmod_poly_struct,
896 f: *const nmod_poly_struct,
897 finv: *const nmod_poly_struct,
898 );
899 pub fn _nmod_poly_invmod(
900 A: *mut ulong,
901 B: *const ulong,
902 lenB: slong,
903 P: *const ulong,
904 lenP: slong,
905 mod_: nmod_t,
906 ) -> libc::c_int;
907 pub fn nmod_poly_invmod(
908 A: *mut nmod_poly_struct,
909 B: *const nmod_poly_struct,
910 P: *const nmod_poly_struct,
911 ) -> libc::c_int;
912 pub fn _nmod_poly_mulmod_precond_init_method(
913 precond: *mut nmod_poly_mulmod_precond_struct,
914 a: nn_srcptr,
915 alen: slong,
916 d: nn_srcptr,
917 dlen: slong,
918 dinv: nn_srcptr,
919 lendinv: slong,
920 method: libc::c_int,
921 mod_: nmod_t,
922 );
923 pub fn nmod_poly_mulmod_precond_init_method(
924 precond: *mut nmod_poly_mulmod_precond_struct,
925 a: *const nmod_poly_struct,
926 d: *const nmod_poly_struct,
927 dinv: *const nmod_poly_struct,
928 method: libc::c_int,
929 );
930 pub fn _nmod_poly_mulmod_precond_init_num(
931 precond: *mut nmod_poly_mulmod_precond_struct,
932 a: nn_srcptr,
933 alen: slong,
934 d: nn_srcptr,
935 dlen: slong,
936 dinv: nn_srcptr,
937 lendinv: slong,
938 num: slong,
939 mod_: nmod_t,
940 );
941 pub fn nmod_poly_mulmod_precond_init_num(
942 precond: *mut nmod_poly_mulmod_precond_struct,
943 a: *const nmod_poly_struct,
944 d: *const nmod_poly_struct,
945 dinv: *const nmod_poly_struct,
946 num: slong,
947 );
948 pub fn nmod_poly_mulmod_precond_clear(precond: *mut nmod_poly_mulmod_precond_struct);
949 pub fn _nmod_poly_mulmod_precond(
950 res: nn_ptr,
951 precond: *const nmod_poly_mulmod_precond_struct,
952 b: nn_srcptr,
953 blen: slong,
954 mod_: nmod_t,
955 );
956 pub fn nmod_poly_mulmod_precond(
957 res: *mut nmod_poly_struct,
958 precond: *const nmod_poly_mulmod_precond_struct,
959 b: *const nmod_poly_struct,
960 );
961 pub fn _nmod_poly_pow_binexp(res: nn_ptr, poly: nn_srcptr, len: slong, e: ulong, mod_: nmod_t);
962 pub fn nmod_poly_pow_binexp(
963 res: *mut nmod_poly_struct,
964 poly: *const nmod_poly_struct,
965 e: ulong,
966 );
967 pub fn _nmod_poly_pow(res: nn_ptr, poly: nn_srcptr, len: slong, e: ulong, mod_: nmod_t);
968 pub fn nmod_poly_pow(res: *mut nmod_poly_struct, poly: *const nmod_poly_struct, e: ulong);
969 pub fn _nmod_poly_pow_trunc_binexp(
970 res: nn_ptr,
971 poly: nn_srcptr,
972 e: ulong,
973 trunc: slong,
974 mod_: nmod_t,
975 );
976 pub fn nmod_poly_pow_trunc_binexp(
977 res: *mut nmod_poly_struct,
978 poly: *const nmod_poly_struct,
979 e: ulong,
980 trunc: slong,
981 );
982 pub fn _nmod_poly_pow_trunc(res: nn_ptr, poly: nn_srcptr, e: ulong, trunc: slong, mod_: nmod_t);
983 pub fn nmod_poly_pow_trunc(
984 res: *mut nmod_poly_struct,
985 poly: *const nmod_poly_struct,
986 e: ulong,
987 trunc: slong,
988 );
989 pub fn _nmod_poly_powmod_ui_binexp(
990 res: nn_ptr,
991 poly: nn_srcptr,
992 e: ulong,
993 f: nn_srcptr,
994 lenf: slong,
995 mod_: nmod_t,
996 );
997 pub fn nmod_poly_powmod_ui_binexp(
998 res: *mut nmod_poly_struct,
999 poly: *const nmod_poly_struct,
1000 e: ulong,
1001 f: *const nmod_poly_struct,
1002 );
1003 pub fn _nmod_poly_powmod_fmpz_binexp(
1004 res: nn_ptr,
1005 poly: nn_srcptr,
1006 e: *mut fmpz,
1007 f: nn_srcptr,
1008 lenf: slong,
1009 mod_: nmod_t,
1010 );
1011 pub fn nmod_poly_powmod_fmpz_binexp(
1012 res: *mut nmod_poly_struct,
1013 poly: *const nmod_poly_struct,
1014 e: *mut fmpz,
1015 f: *const nmod_poly_struct,
1016 );
1017 pub fn _nmod_poly_powmod_ui_binexp_preinv(
1018 res: nn_ptr,
1019 poly: nn_srcptr,
1020 e: ulong,
1021 f: nn_srcptr,
1022 lenf: slong,
1023 finv: nn_srcptr,
1024 lenfinv: slong,
1025 mod_: nmod_t,
1026 );
1027 pub fn nmod_poly_powmod_ui_binexp_preinv(
1028 res: *mut nmod_poly_struct,
1029 poly: *const nmod_poly_struct,
1030 e: ulong,
1031 f: *const nmod_poly_struct,
1032 finv: *const nmod_poly_struct,
1033 );
1034 pub fn _nmod_poly_powmod_fmpz_binexp_preinv(
1035 res: nn_ptr,
1036 poly: nn_srcptr,
1037 e: *mut fmpz,
1038 f: nn_srcptr,
1039 lenf: slong,
1040 finv: nn_srcptr,
1041 lenfinv: slong,
1042 mod_: nmod_t,
1043 );
1044 pub fn nmod_poly_powmod_fmpz_binexp_preinv(
1045 res: *mut nmod_poly_struct,
1046 poly: *const nmod_poly_struct,
1047 e: *mut fmpz,
1048 f: *const nmod_poly_struct,
1049 finv: *const nmod_poly_struct,
1050 );
1051 pub fn _nmod_poly_powmod_x_ui_preinv(
1052 res: nn_ptr,
1053 e: ulong,
1054 f: nn_srcptr,
1055 lenf: slong,
1056 finv: nn_srcptr,
1057 lenfinv: slong,
1058 mod_: nmod_t,
1059 );
1060 pub fn nmod_poly_powmod_x_ui_preinv(
1061 res: *mut nmod_poly_struct,
1062 e: ulong,
1063 f: *const nmod_poly_struct,
1064 finv: *const nmod_poly_struct,
1065 );
1066 pub fn _nmod_poly_powmod_x_fmpz_preinv(
1067 res: nn_ptr,
1068 e: *mut fmpz,
1069 f: nn_srcptr,
1070 lenf: slong,
1071 finv: nn_srcptr,
1072 lenfinv: slong,
1073 mod_: nmod_t,
1074 );
1075 pub fn nmod_poly_powmod_x_fmpz_preinv(
1076 res: *mut nmod_poly_struct,
1077 e: *mut fmpz,
1078 f: *const nmod_poly_struct,
1079 finv: *const nmod_poly_struct,
1080 );
1081 pub fn _nmod_poly_powers_mod_preinv_naive(
1082 res: *mut nn_ptr,
1083 f: nn_srcptr,
1084 flen: slong,
1085 n: slong,
1086 g: nn_srcptr,
1087 glen: slong,
1088 ginv: nn_srcptr,
1089 ginvlen: slong,
1090 mod_: nmod_t,
1091 );
1092 pub fn nmod_poly_powers_mod_naive(
1093 res: *mut nmod_poly_struct,
1094 f: *const nmod_poly_struct,
1095 n: slong,
1096 g: *const nmod_poly_struct,
1097 );
1098 pub fn _nmod_poly_powers_mod_preinv_threaded_pool(
1099 res: *mut nn_ptr,
1100 f: nn_srcptr,
1101 flen: slong,
1102 n: slong,
1103 g: nn_srcptr,
1104 glen: slong,
1105 ginv: nn_srcptr,
1106 ginvlen: slong,
1107 mod_: nmod_t,
1108 threads: *mut thread_pool_handle,
1109 num_threads: slong,
1110 );
1111 pub fn _nmod_poly_powers_mod_preinv_threaded(
1112 res: *mut nn_ptr,
1113 f: nn_srcptr,
1114 flen: slong,
1115 n: slong,
1116 g: nn_srcptr,
1117 glen: slong,
1118 ginv: nn_srcptr,
1119 ginvlen: slong,
1120 mod_: nmod_t,
1121 );
1122 pub fn nmod_poly_powers_mod_bsgs(
1123 res: *mut nmod_poly_struct,
1124 f: *const nmod_poly_struct,
1125 n: slong,
1126 g: *const nmod_poly_struct,
1127 );
1128 pub fn _nmod_poly_divrem_q1_preinv1(
1129 Q: nn_ptr,
1130 R: nn_ptr,
1131 A: nn_srcptr,
1132 lenA: slong,
1133 B: nn_srcptr,
1134 lenB: slong,
1135 invL: ulong,
1136 mod_: nmod_t,
1137 );
1138 pub fn _nmod_poly_divrem_basecase_preinv1(
1139 Q: nn_ptr,
1140 R: nn_ptr,
1141 A: nn_srcptr,
1142 A_len: slong,
1143 B: nn_srcptr,
1144 B_len: slong,
1145 invB: ulong,
1146 mod_: nmod_t,
1147 );
1148 pub fn _nmod_poly_divrem_basecase(
1149 Q: nn_ptr,
1150 R: nn_ptr,
1151 A: nn_srcptr,
1152 A_len: slong,
1153 B: nn_srcptr,
1154 B_len: slong,
1155 mod_: nmod_t,
1156 );
1157 pub fn nmod_poly_divrem_basecase(
1158 Q: *mut nmod_poly_struct,
1159 R: *mut nmod_poly_struct,
1160 A: *const nmod_poly_struct,
1161 B: *const nmod_poly_struct,
1162 );
1163 pub fn _nmod_poly_divrem(
1164 Q: nn_ptr,
1165 R: nn_ptr,
1166 A: nn_srcptr,
1167 lenA: slong,
1168 B: nn_srcptr,
1169 lenB: slong,
1170 mod_: nmod_t,
1171 );
1172 pub fn nmod_poly_divrem(
1173 Q: *mut nmod_poly_struct,
1174 R: *mut nmod_poly_struct,
1175 A: *const nmod_poly_struct,
1176 B: *const nmod_poly_struct,
1177 );
1178 pub fn _nmod_poly_div(
1179 Q: nn_ptr,
1180 A: nn_srcptr,
1181 lenA: slong,
1182 B: nn_srcptr,
1183 lenB: slong,
1184 mod_: nmod_t,
1185 );
1186 pub fn nmod_poly_div(
1187 Q: *mut nmod_poly_struct,
1188 A: *const nmod_poly_struct,
1189 B: *const nmod_poly_struct,
1190 );
1191 pub fn _nmod_poly_rem(
1192 R: nn_ptr,
1193 A: nn_srcptr,
1194 lenA: slong,
1195 B: nn_srcptr,
1196 lenB: slong,
1197 mod_: nmod_t,
1198 );
1199 pub fn nmod_poly_rem(
1200 R: *mut nmod_poly_struct,
1201 A: *const nmod_poly_struct,
1202 B: *const nmod_poly_struct,
1203 );
1204 pub fn _nmod_poly_divexact(
1205 Q: nn_ptr,
1206 A: nn_srcptr,
1207 lenA: slong,
1208 B: nn_srcptr,
1209 lenB: slong,
1210 mod_: nmod_t,
1211 );
1212 pub fn nmod_poly_divexact(
1213 Q: *mut nmod_poly_struct,
1214 A: *const nmod_poly_struct,
1215 B: *const nmod_poly_struct,
1216 );
1217 pub fn _nmod_poly_inv_series_basecase(
1218 Qinv: nn_ptr,
1219 Q: nn_srcptr,
1220 Qlen: slong,
1221 n: slong,
1222 mod_: nmod_t,
1223 );
1224 pub fn nmod_poly_inv_series_basecase(
1225 Qinv: *mut nmod_poly_struct,
1226 Q: *const nmod_poly_struct,
1227 n: slong,
1228 );
1229 pub fn _nmod_poly_inv_series_newton(
1230 Qinv: nn_ptr,
1231 Q: nn_srcptr,
1232 Qlen: slong,
1233 n: slong,
1234 mod_: nmod_t,
1235 );
1236 pub fn nmod_poly_inv_series_newton(
1237 Qinv: *mut nmod_poly_struct,
1238 Q: *const nmod_poly_struct,
1239 n: slong,
1240 );
1241 pub fn _nmod_poly_inv_series(Qinv: nn_ptr, Q: nn_srcptr, Qlen: slong, n: slong, mod_: nmod_t);
1242 pub fn nmod_poly_inv_series(Qinv: *mut nmod_poly_struct, Q: *const nmod_poly_struct, n: slong);
1243 pub fn _nmod_poly_div_series_basecase(
1244 Q: nn_ptr,
1245 A: nn_srcptr,
1246 Alen: slong,
1247 B: nn_srcptr,
1248 Blen: slong,
1249 n: slong,
1250 mod_: nmod_t,
1251 );
1252 pub fn nmod_poly_div_series_basecase(
1253 Q: *mut nmod_poly_struct,
1254 A: *const nmod_poly_struct,
1255 B: *const nmod_poly_struct,
1256 n: slong,
1257 );
1258 pub fn _nmod_poly_div_series(
1259 Q: nn_ptr,
1260 A: nn_srcptr,
1261 Alen: slong,
1262 B: nn_srcptr,
1263 Blen: slong,
1264 n: slong,
1265 mod_: nmod_t,
1266 );
1267 pub fn nmod_poly_div_series(
1268 Q: *mut nmod_poly_struct,
1269 A: *const nmod_poly_struct,
1270 B: *const nmod_poly_struct,
1271 n: slong,
1272 );
1273 pub fn _nmod_poly_div_newton_n_preinv(
1274 Q: nn_ptr,
1275 A: nn_srcptr,
1276 lenA: slong,
1277 UNUSED_B: nn_srcptr,
1278 lenB: slong,
1279 Binv: nn_srcptr,
1280 lenBinv: slong,
1281 mod_: nmod_t,
1282 );
1283 pub fn nmod_poly_div_newton_n_preinv(
1284 Q: *mut nmod_poly_struct,
1285 A: *const nmod_poly_struct,
1286 B: *const nmod_poly_struct,
1287 Binv: *const nmod_poly_struct,
1288 );
1289 pub fn _nmod_poly_divrem_newton_n_preinv(
1290 Q: nn_ptr,
1291 R: nn_ptr,
1292 A: nn_srcptr,
1293 lenA: slong,
1294 B: nn_srcptr,
1295 lenB: slong,
1296 Binv: nn_srcptr,
1297 lenBinv: slong,
1298 mod_: nmod_t,
1299 );
1300 pub fn nmod_poly_divrem_newton_n_preinv(
1301 Q: *mut nmod_poly_struct,
1302 R: *mut nmod_poly_struct,
1303 A: *const nmod_poly_struct,
1304 B: *const nmod_poly_struct,
1305 Binv: *const nmod_poly_struct,
1306 );
1307 pub fn _nmod_poly_div_root(
1308 Q: nn_ptr,
1309 A: nn_srcptr,
1310 len: slong,
1311 c: ulong,
1312 mod_: nmod_t,
1313 ) -> ulong;
1314 pub fn nmod_poly_div_root(
1315 Q: *mut nmod_poly_struct,
1316 A: *const nmod_poly_struct,
1317 c: ulong,
1318 ) -> ulong;
1319 pub fn _nmod_poly_divides_classical(
1320 Q: nn_ptr,
1321 A: nn_srcptr,
1322 lenA: slong,
1323 B: nn_srcptr,
1324 lenB: slong,
1325 mod_: nmod_t,
1326 ) -> libc::c_int;
1327 pub fn nmod_poly_divides_classical(
1328 Q: *mut nmod_poly_struct,
1329 A: *const nmod_poly_struct,
1330 B: *const nmod_poly_struct,
1331 ) -> libc::c_int;
1332 pub fn _nmod_poly_divides(
1333 Q: nn_ptr,
1334 A: nn_srcptr,
1335 lenA: slong,
1336 B: nn_srcptr,
1337 lenB: slong,
1338 mod_: nmod_t,
1339 ) -> libc::c_int;
1340 pub fn nmod_poly_divides(
1341 Q: *mut nmod_poly_struct,
1342 A: *const nmod_poly_struct,
1343 B: *const nmod_poly_struct,
1344 ) -> libc::c_int;
1345 pub fn nmod_poly_remove(f: *mut nmod_poly_struct, p: *const nmod_poly_struct) -> ulong;
1346 pub fn _nmod_poly_derivative(x_prime: nn_ptr, x: nn_srcptr, len: slong, mod_: nmod_t);
1347 pub fn nmod_poly_derivative(x_prime: *mut nmod_poly_struct, x: *const nmod_poly_struct);
1348 pub fn _nmod_poly_integral(x_int: nn_ptr, x: nn_srcptr, len: slong, mod_: nmod_t);
1349 pub fn nmod_poly_integral(x_int: *mut nmod_poly_struct, x: *const nmod_poly_struct);
1350 pub fn _nmod_poly_evaluate_nmod(poly: nn_srcptr, len: slong, c: ulong, mod_: nmod_t) -> ulong;
1351 pub fn _nmod_poly_evaluate_nmod_precomp(
1352 poly: nn_srcptr,
1353 len: slong,
1354 c: ulong,
1355 c_precomp: ulong,
1356 modn: ulong,
1357 ) -> ulong;
1358 pub fn _nmod_poly_evaluate_nmod_precomp_lazy(
1359 poly: nn_srcptr,
1360 len: slong,
1361 c: ulong,
1362 c_precomp: ulong,
1363 modn: ulong,
1364 ) -> ulong;
1365 pub fn nmod_poly_evaluate_nmod(poly: *const nmod_poly_struct, c: ulong) -> ulong;
1366 pub fn _nmod_poly_evaluate_nmod_vec(
1367 ys: nn_ptr,
1368 coeffs: nn_srcptr,
1369 len: slong,
1370 xs: nn_srcptr,
1371 n: slong,
1372 mod_: nmod_t,
1373 );
1374 pub fn nmod_poly_evaluate_nmod_vec(
1375 ys: nn_ptr,
1376 poly: *const nmod_poly_struct,
1377 xs: nn_srcptr,
1378 n: slong,
1379 );
1380 pub fn _nmod_poly_evaluate_nmod_vec_iter(
1381 ys: nn_ptr,
1382 coeffs: nn_srcptr,
1383 len: slong,
1384 xs: nn_srcptr,
1385 n: slong,
1386 mod_: nmod_t,
1387 );
1388 pub fn nmod_poly_evaluate_nmod_vec_iter(
1389 ys: nn_ptr,
1390 poly: *const nmod_poly_struct,
1391 xs: nn_srcptr,
1392 n: slong,
1393 );
1394 pub fn _nmod_poly_evaluate_nmod_vec_fast_precomp(
1395 vs: nn_ptr,
1396 poly: nn_srcptr,
1397 plen: slong,
1398 tree: *const nn_ptr,
1399 len: slong,
1400 mod_: nmod_t,
1401 );
1402 pub fn _nmod_poly_evaluate_nmod_vec_fast(
1403 ys: nn_ptr,
1404 coeffs: nn_srcptr,
1405 len: slong,
1406 xs: nn_srcptr,
1407 n: slong,
1408 mod_: nmod_t,
1409 );
1410 pub fn nmod_poly_evaluate_nmod_vec_fast(
1411 ys: nn_ptr,
1412 poly: *const nmod_poly_struct,
1413 xs: nn_srcptr,
1414 n: slong,
1415 );
1416 pub fn nmod_mat_one_addmul(dest: *mut nmod_mat_struct, mat: *const nmod_mat_struct, c: ulong);
1417 pub fn nmod_poly_evaluate_mat_horner(
1418 dest: *mut nmod_mat_struct,
1419 poly: *const nmod_poly_struct,
1420 c: *const nmod_mat_struct,
1421 );
1422 pub fn nmod_poly_evaluate_mat_paterson_stockmeyer(
1423 dest: *mut nmod_mat_struct,
1424 poly: *const nmod_poly_struct,
1425 c: *const nmod_mat_struct,
1426 );
1427 #[link_name = "nmod_poly_evaluate_mat__extern"]
1428 pub fn nmod_poly_evaluate_mat(
1429 dest: *mut nmod_mat_struct,
1430 poly: *const nmod_poly_struct,
1431 c: *const nmod_mat_struct,
1432 );
1433 pub fn _nmod_poly_tree_alloc(len: slong) -> *mut nn_ptr;
1434 pub fn _nmod_poly_tree_free(tree: *mut nn_ptr, len: slong);
1435 pub fn _nmod_poly_tree_build(tree: *mut nn_ptr, roots: nn_srcptr, len: slong, mod_: nmod_t);
1436 pub fn nmod_geometric_progression_init(
1437 G: *mut nmod_geometric_progression_struct,
1438 r: ulong,
1439 len: slong,
1440 mod_: nmod_t,
1441 );
1442 pub fn nmod_geometric_progression_clear(G: *mut nmod_geometric_progression_struct);
1443 pub fn _nmod_poly_evaluate_geometric_nmod_vec_iter(
1444 ys: nn_ptr,
1445 coeffs: nn_srcptr,
1446 len: slong,
1447 r: ulong,
1448 n: slong,
1449 mod_: nmod_t,
1450 );
1451 pub fn nmod_poly_evaluate_geometric_nmod_vec_iter(
1452 ys: nn_ptr,
1453 poly: *const nmod_poly_struct,
1454 r: ulong,
1455 n: slong,
1456 );
1457 pub fn _nmod_poly_evaluate_geometric_nmod_vec_fast_precomp(
1458 vs: nn_ptr,
1459 poly: nn_srcptr,
1460 plen: slong,
1461 G: *const nmod_geometric_progression_struct,
1462 len: slong,
1463 mod_: nmod_t,
1464 );
1465 pub fn _nmod_poly_evaluate_geometric_nmod_vec_fast(
1466 ys: nn_ptr,
1467 coeffs: nn_srcptr,
1468 len: slong,
1469 r: ulong,
1470 n: slong,
1471 mod_: nmod_t,
1472 );
1473 pub fn nmod_poly_evaluate_geometric_nmod_vec_fast(
1474 ys: nn_ptr,
1475 poly: *const nmod_poly_struct,
1476 r: ulong,
1477 n: slong,
1478 );
1479 pub fn _nmod_poly_interpolate_geometric_nmod_vec_fast_precomp(
1480 poly: nn_ptr,
1481 v: nn_srcptr,
1482 G: *const nmod_geometric_progression_struct,
1483 len: slong,
1484 mod_: nmod_t,
1485 );
1486 pub fn nmod_poly_interpolate_geometric_nmod_vec_fast_precomp(
1487 poly: *mut nmod_poly_struct,
1488 v: nn_srcptr,
1489 G: *const nmod_geometric_progression_struct,
1490 len: slong,
1491 );
1492 pub fn nmod_poly_interpolate_geometric_nmod_vec_fast(
1493 poly: *mut nmod_poly_struct,
1494 r: ulong,
1495 ys: nn_srcptr,
1496 n: slong,
1497 );
1498 pub fn _nmod_poly_interpolate_nmod_vec_newton(
1499 poly: nn_ptr,
1500 xs: nn_srcptr,
1501 ys: nn_srcptr,
1502 n: slong,
1503 mod_: nmod_t,
1504 );
1505 pub fn nmod_poly_interpolate_nmod_vec_newton(
1506 poly: *mut nmod_poly_struct,
1507 xs: nn_srcptr,
1508 ys: nn_srcptr,
1509 n: slong,
1510 );
1511 pub fn _nmod_poly_interpolate_nmod_vec_barycentric(
1512 poly: nn_ptr,
1513 xs: nn_srcptr,
1514 ys: nn_srcptr,
1515 n: slong,
1516 mod_: nmod_t,
1517 );
1518 pub fn nmod_poly_interpolate_nmod_vec_barycentric(
1519 poly: *mut nmod_poly_struct,
1520 xs: nn_srcptr,
1521 ys: nn_srcptr,
1522 n: slong,
1523 );
1524 pub fn _nmod_poly_interpolate_nmod_vec(
1525 poly: nn_ptr,
1526 xs: nn_srcptr,
1527 ys: nn_srcptr,
1528 n: slong,
1529 mod_: nmod_t,
1530 );
1531 pub fn nmod_poly_interpolate_nmod_vec(
1532 poly: *mut nmod_poly_struct,
1533 xs: nn_srcptr,
1534 ys: nn_srcptr,
1535 n: slong,
1536 );
1537 pub fn _nmod_poly_interpolate_nmod_vec_fast(
1538 poly: nn_ptr,
1539 xs: nn_srcptr,
1540 ys: nn_srcptr,
1541 len: slong,
1542 mod_: nmod_t,
1543 );
1544 pub fn nmod_poly_interpolate_nmod_vec_fast(
1545 poly: *mut nmod_poly_struct,
1546 xs: nn_srcptr,
1547 ys: nn_srcptr,
1548 n: slong,
1549 );
1550 pub fn _nmod_poly_interpolate_nmod_vec_fast_precomp(
1551 poly: nn_ptr,
1552 ys: nn_srcptr,
1553 tree: *const nn_ptr,
1554 weights: nn_srcptr,
1555 len: slong,
1556 mod_: nmod_t,
1557 );
1558 pub fn _nmod_poly_interpolation_weights(
1559 w: nn_ptr,
1560 tree: *const nn_ptr,
1561 len: slong,
1562 mod_: nmod_t,
1563 );
1564 pub fn _nmod_poly_compose_horner(
1565 res: nn_ptr,
1566 poly1: nn_srcptr,
1567 len1: slong,
1568 poly2: nn_srcptr,
1569 len2: slong,
1570 mod_: nmod_t,
1571 );
1572 pub fn nmod_poly_compose_horner(
1573 res: *mut nmod_poly_struct,
1574 poly1: *const nmod_poly_struct,
1575 poly2: *const nmod_poly_struct,
1576 );
1577 pub fn _nmod_poly_compose(
1578 res: nn_ptr,
1579 poly1: nn_srcptr,
1580 len1: slong,
1581 poly2: nn_srcptr,
1582 len2: slong,
1583 mod_: nmod_t,
1584 );
1585 pub fn nmod_poly_compose(
1586 res: *mut nmod_poly_struct,
1587 poly1: *const nmod_poly_struct,
1588 poly2: *const nmod_poly_struct,
1589 );
1590 pub fn _nmod_poly_taylor_shift_horner(poly: nn_ptr, c: ulong, len: slong, mod_: nmod_t);
1591 pub fn nmod_poly_taylor_shift_horner(
1592 g: *mut nmod_poly_struct,
1593 f: *const nmod_poly_struct,
1594 c: ulong,
1595 );
1596 pub fn _nmod_poly_taylor_shift_convolution(poly: nn_ptr, c: ulong, len: slong, mod_: nmod_t);
1597 pub fn nmod_poly_taylor_shift_convolution(
1598 g: *mut nmod_poly_struct,
1599 f: *const nmod_poly_struct,
1600 c: ulong,
1601 );
1602 pub fn _nmod_poly_taylor_shift(poly: nn_ptr, c: ulong, len: slong, mod_: nmod_t);
1603 pub fn nmod_poly_taylor_shift(g: *mut nmod_poly_struct, f: *const nmod_poly_struct, c: ulong);
1604 pub fn _nmod_poly_mod_matrix_rows_evaluate(
1605 res: nn_ptr,
1606 A: *const nmod_mat_struct,
1607 h: nn_srcptr,
1608 n: slong,
1609 poly3: nn_srcptr,
1610 len3: slong,
1611 poly3inv: nn_srcptr,
1612 len3inv: slong,
1613 mod_: nmod_t,
1614 );
1615 pub fn _nmod_poly_compose_mod_brent_kung(
1616 res: nn_ptr,
1617 f: nn_srcptr,
1618 lenf: slong,
1619 g: nn_srcptr,
1620 h: nn_srcptr,
1621 lenh: slong,
1622 mod_: nmod_t,
1623 );
1624 pub fn nmod_poly_compose_mod_brent_kung(
1625 res: *mut nmod_poly_struct,
1626 f: *const nmod_poly_struct,
1627 g: *const nmod_poly_struct,
1628 h: *const nmod_poly_struct,
1629 );
1630 pub fn _nmod_poly_reduce_matrix_mod_poly(
1631 A: *mut nmod_mat_struct,
1632 B: *const nmod_mat_struct,
1633 f: *const nmod_poly_struct,
1634 );
1635 pub fn _nmod_poly_precompute_matrix(
1636 A: *mut nmod_mat_struct,
1637 poly1: nn_srcptr,
1638 poly2: nn_srcptr,
1639 len2: slong,
1640 poly2inv: nn_srcptr,
1641 len2inv: slong,
1642 mod_: nmod_t,
1643 );
1644 pub fn _nmod_poly_precompute_matrix_worker(arg_ptr: *mut libc::c_void);
1645 pub fn nmod_poly_precompute_matrix(
1646 A: *mut nmod_mat_struct,
1647 poly1: *const nmod_poly_struct,
1648 poly2: *const nmod_poly_struct,
1649 poly2inv: *const nmod_poly_struct,
1650 );
1651 pub fn _nmod_poly_compose_mod_brent_kung_precomp_preinv(
1652 res: nn_ptr,
1653 poly1: nn_srcptr,
1654 len1: slong,
1655 A: *const nmod_mat_struct,
1656 poly3: nn_srcptr,
1657 len3: slong,
1658 poly3inv: nn_srcptr,
1659 len3inv: slong,
1660 mod_: nmod_t,
1661 );
1662 pub fn _nmod_poly_compose_mod_brent_kung_precomp_preinv_worker(arg_ptr: *mut libc::c_void);
1663 pub fn nmod_poly_compose_mod_brent_kung_precomp_preinv(
1664 res: *mut nmod_poly_struct,
1665 poly1: *const nmod_poly_struct,
1666 A: *const nmod_mat_struct,
1667 poly3: *const nmod_poly_struct,
1668 poly3inv: *const nmod_poly_struct,
1669 );
1670 pub fn _nmod_poly_compose_mod_brent_kung_preinv(
1671 res: nn_ptr,
1672 poly1: nn_srcptr,
1673 len1: slong,
1674 poly2: nn_srcptr,
1675 poly3: nn_srcptr,
1676 len3: slong,
1677 poly3inv: nn_srcptr,
1678 len3inv: slong,
1679 mod_: nmod_t,
1680 );
1681 pub fn nmod_poly_compose_mod_brent_kung_preinv(
1682 res: *mut nmod_poly_struct,
1683 poly1: *const nmod_poly_struct,
1684 poly2: *const nmod_poly_struct,
1685 poly3: *const nmod_poly_struct,
1686 poly3inv: *const nmod_poly_struct,
1687 );
1688 pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv(
1689 res: *mut nmod_poly_struct,
1690 polys: *const nmod_poly_struct,
1691 UNUSED_lenpolys: slong,
1692 l: slong,
1693 g: nn_srcptr,
1694 glen: slong,
1695 poly: nn_srcptr,
1696 len: slong,
1697 polyinv: nn_srcptr,
1698 leninv: slong,
1699 mod_: nmod_t,
1700 );
1701 pub fn nmod_poly_compose_mod_brent_kung_vec_preinv(
1702 res: *mut nmod_poly_struct,
1703 polys: *const nmod_poly_struct,
1704 len1: slong,
1705 n: slong,
1706 g: *const nmod_poly_struct,
1707 poly: *const nmod_poly_struct,
1708 polyinv: *const nmod_poly_struct,
1709 );
1710 pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv_worker(arg_ptr: *mut libc::c_void);
1711 pub fn nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
1712 res: *mut nmod_poly_struct,
1713 polys: *const nmod_poly_struct,
1714 len1: slong,
1715 n: slong,
1716 g: *const nmod_poly_struct,
1717 poly: *const nmod_poly_struct,
1718 polyinv: *const nmod_poly_struct,
1719 threads: *mut thread_pool_handle,
1720 num_threads: slong,
1721 );
1722 pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
1723 res: *mut nmod_poly_struct,
1724 polys: *const nmod_poly_struct,
1725 UNUSED_lenpolys: slong,
1726 l: slong,
1727 g: nn_srcptr,
1728 glen: slong,
1729 poly: nn_srcptr,
1730 len: slong,
1731 polyinv: nn_srcptr,
1732 leninv: slong,
1733 mod_: nmod_t,
1734 threads: *mut thread_pool_handle,
1735 num_threads: slong,
1736 );
1737 pub fn nmod_poly_compose_mod_brent_kung_vec_preinv_threaded(
1738 res: *mut nmod_poly_struct,
1739 polys: *const nmod_poly_struct,
1740 len1: slong,
1741 n: slong,
1742 g: *const nmod_poly_struct,
1743 poly: *const nmod_poly_struct,
1744 polyinv: *const nmod_poly_struct,
1745 );
1746 pub fn _nmod_poly_compose_mod_horner(
1747 res: nn_ptr,
1748 f: nn_srcptr,
1749 lenf: slong,
1750 g: nn_srcptr,
1751 h: nn_srcptr,
1752 lenh: slong,
1753 mod_: nmod_t,
1754 );
1755 pub fn nmod_poly_compose_mod_horner(
1756 res: *mut nmod_poly_struct,
1757 f: *const nmod_poly_struct,
1758 g: *const nmod_poly_struct,
1759 h: *const nmod_poly_struct,
1760 );
1761 pub fn _nmod_poly_compose_mod(
1762 res: nn_ptr,
1763 f: nn_srcptr,
1764 lenf: slong,
1765 g: nn_srcptr,
1766 h: nn_srcptr,
1767 lenh: slong,
1768 mod_: nmod_t,
1769 );
1770 pub fn nmod_poly_compose_mod(
1771 res: *mut nmod_poly_struct,
1772 f: *const nmod_poly_struct,
1773 g: *const nmod_poly_struct,
1774 h: *const nmod_poly_struct,
1775 );
1776 pub fn _nmod_poly_compose_series(
1777 res: nn_ptr,
1778 poly1: nn_srcptr,
1779 len1: slong,
1780 poly2: nn_srcptr,
1781 len2: slong,
1782 n: slong,
1783 mod_: nmod_t,
1784 );
1785 pub fn nmod_poly_compose_series(
1786 res: *mut nmod_poly_struct,
1787 poly1: *const nmod_poly_struct,
1788 poly2: *const nmod_poly_struct,
1789 n: slong,
1790 );
1791 pub fn _nmod_poly_revert_series(
1792 Qinv: nn_ptr,
1793 Q: nn_srcptr,
1794 Qlen: slong,
1795 n: slong,
1796 mod_: nmod_t,
1797 );
1798 pub fn nmod_poly_revert_series(
1799 Qinv: *mut nmod_poly_struct,
1800 Q: *const nmod_poly_struct,
1801 n: slong,
1802 );
1803 #[link_name = "_nmod_poly_hamming_weight__extern"]
1804 pub fn _nmod_poly_hamming_weight(a: nn_srcptr, len: slong) -> slong;
1805 #[link_name = "nmod_poly_hamming_weight__extern"]
1806 pub fn nmod_poly_hamming_weight(A: *const nmod_poly_struct) -> slong;
1807 pub fn nmod_poly_hgcd_iter_recursive_cutoff(mod_: nmod_t) -> slong;
1808 pub fn nmod_poly_hgcd_outer_cutoff(mod_: nmod_t) -> slong;
1809 pub fn nmod_poly_gcd_hgcd_cutoff(mod_: nmod_t) -> slong;
1810 pub fn nmod_poly_xgcd_hgcd_cutoff(mod_: nmod_t) -> slong;
1811 pub fn _nmod_poly_gcd_euclidean(
1812 G: nn_ptr,
1813 A: nn_srcptr,
1814 lenA: slong,
1815 B: nn_srcptr,
1816 lenB: slong,
1817 mod_: nmod_t,
1818 ) -> slong;
1819 pub fn nmod_poly_gcd_euclidean(
1820 G: *mut nmod_poly_struct,
1821 A: *const nmod_poly_struct,
1822 B: *const nmod_poly_struct,
1823 );
1824 pub fn _nmod_poly_gcd_euclidean_redc_fast(
1825 G: nn_ptr,
1826 A: nn_srcptr,
1827 lenA: slong,
1828 B: nn_srcptr,
1829 lenB: slong,
1830 mod_: nmod_t,
1831 ) -> slong;
1832 pub fn nmod_poly_gcd_euclidean_redc_fast(
1833 G: *mut nmod_poly_struct,
1834 A: *const nmod_poly_struct,
1835 B: *const nmod_poly_struct,
1836 );
1837 pub fn _nmod_poly_hgcd_recursive(
1838 M: *mut nn_ptr,
1839 lenM: *mut slong,
1840 A: nn_ptr,
1841 lenA: *mut slong,
1842 B: nn_ptr,
1843 lenB: *mut slong,
1844 a: nn_srcptr,
1845 lena: slong,
1846 b: nn_srcptr,
1847 lenb: slong,
1848 P: nn_ptr,
1849 mod_: nmod_t,
1850 flag: libc::c_int,
1851 res: *mut nmod_poly_res_struct,
1852 ) -> slong;
1853 pub fn nmod_poly_hgcd_ref(
1854 m11: *mut nmod_poly_struct,
1855 m12: *mut nmod_poly_struct,
1856 m21: *mut nmod_poly_struct,
1857 m22: *mut nmod_poly_struct,
1858 A: *mut nmod_poly_struct,
1859 B: *mut nmod_poly_struct,
1860 a: *const nmod_poly_struct,
1861 b: *const nmod_poly_struct,
1862 ) -> slong;
1863 pub fn _nmod_poly_hgcd(
1864 M: *mut nn_ptr,
1865 lenM: *mut slong,
1866 A: nn_ptr,
1867 lenA: *mut slong,
1868 B: nn_ptr,
1869 lenB: *mut slong,
1870 a: nn_srcptr,
1871 lena: slong,
1872 b: nn_srcptr,
1873 lenb: slong,
1874 mod_: nmod_t,
1875 ) -> slong;
1876 pub fn nmod_poly_hgcd(
1877 m11: *mut nmod_poly_struct,
1878 m12: *mut nmod_poly_struct,
1879 m21: *mut nmod_poly_struct,
1880 m22: *mut nmod_poly_struct,
1881 A: *mut nmod_poly_struct,
1882 B: *mut nmod_poly_struct,
1883 a: *const nmod_poly_struct,
1884 b: *const nmod_poly_struct,
1885 ) -> slong;
1886 pub fn _nmod_poly_gcd_hgcd(
1887 G: nn_ptr,
1888 A: nn_srcptr,
1889 lenA: slong,
1890 B: nn_srcptr,
1891 lenB: slong,
1892 mod_: nmod_t,
1893 ) -> slong;
1894 pub fn nmod_poly_gcd_hgcd(
1895 G: *mut nmod_poly_struct,
1896 A: *const nmod_poly_struct,
1897 B: *const nmod_poly_struct,
1898 );
1899 pub fn _nmod_poly_gcd(
1900 G: nn_ptr,
1901 A: nn_srcptr,
1902 lenA: slong,
1903 B: nn_srcptr,
1904 lenB: slong,
1905 mod_: nmod_t,
1906 ) -> slong;
1907 pub fn nmod_poly_gcd(
1908 G: *mut nmod_poly_struct,
1909 A: *const nmod_poly_struct,
1910 B: *const nmod_poly_struct,
1911 );
1912 pub fn _nmod_poly_xgcd_euclidean(
1913 res: nn_ptr,
1914 s: nn_ptr,
1915 t: nn_ptr,
1916 poly1: nn_srcptr,
1917 len1: slong,
1918 poly2: nn_srcptr,
1919 len2: slong,
1920 mod_: nmod_t,
1921 ) -> slong;
1922 pub fn nmod_poly_xgcd_euclidean(
1923 G: *mut nmod_poly_struct,
1924 S: *mut nmod_poly_struct,
1925 T: *mut nmod_poly_struct,
1926 A: *const nmod_poly_struct,
1927 B: *const nmod_poly_struct,
1928 );
1929 pub fn _nmod_poly_xgcd_hgcd(
1930 G: nn_ptr,
1931 S: nn_ptr,
1932 T: nn_ptr,
1933 A: nn_srcptr,
1934 lenA: slong,
1935 B: nn_srcptr,
1936 lenB: slong,
1937 mod_: nmod_t,
1938 ) -> slong;
1939 pub fn nmod_poly_xgcd_hgcd(
1940 G: *mut nmod_poly_struct,
1941 S: *mut nmod_poly_struct,
1942 T: *mut nmod_poly_struct,
1943 A: *const nmod_poly_struct,
1944 B: *const nmod_poly_struct,
1945 );
1946 pub fn _nmod_poly_xgcd(
1947 G: nn_ptr,
1948 S: nn_ptr,
1949 T: nn_ptr,
1950 A: nn_srcptr,
1951 lenA: slong,
1952 B: nn_srcptr,
1953 lenB: slong,
1954 mod_: nmod_t,
1955 ) -> slong;
1956 pub fn nmod_poly_xgcd(
1957 G: *mut nmod_poly_struct,
1958 S: *mut nmod_poly_struct,
1959 T: *mut nmod_poly_struct,
1960 A: *const nmod_poly_struct,
1961 B: *const nmod_poly_struct,
1962 );
1963 pub fn _nmod_poly_resultant_euclidean(
1964 poly1: nn_srcptr,
1965 len1: slong,
1966 poly2: nn_srcptr,
1967 len2: slong,
1968 mod_: nmod_t,
1969 ) -> ulong;
1970 pub fn nmod_poly_resultant_euclidean(
1971 f: *const nmod_poly_struct,
1972 g: *const nmod_poly_struct,
1973 ) -> ulong;
1974 pub fn _nmod_poly_resultant_hgcd(
1975 A: nn_srcptr,
1976 lenA: slong,
1977 B: nn_srcptr,
1978 lenB: slong,
1979 mod_: nmod_t,
1980 ) -> ulong;
1981 pub fn nmod_poly_resultant_hgcd(
1982 A: *const nmod_poly_struct,
1983 B: *const nmod_poly_struct,
1984 ) -> ulong;
1985 pub fn _nmod_poly_resultant(
1986 A: nn_srcptr,
1987 lenA: slong,
1988 B: nn_srcptr,
1989 lenB: slong,
1990 mod_: nmod_t,
1991 ) -> ulong;
1992 pub fn nmod_poly_resultant(A: *const nmod_poly_struct, B: *const nmod_poly_struct) -> ulong;
1993 pub fn _nmod_poly_gcdinv(
1994 G: *mut ulong,
1995 S: *mut ulong,
1996 A: *const ulong,
1997 lenA: slong,
1998 B: *const ulong,
1999 lenB: slong,
2000 mod_: nmod_t,
2001 ) -> slong;
2002 pub fn nmod_poly_gcdinv(
2003 G: *mut nmod_poly_struct,
2004 S: *mut nmod_poly_struct,
2005 A: *const nmod_poly_struct,
2006 B: *const nmod_poly_struct,
2007 );
2008 pub fn _nmod_poly_discriminant(poly: nn_srcptr, len: slong, mod_: nmod_t) -> ulong;
2009 pub fn nmod_poly_discriminant(f: *const nmod_poly_struct) -> ulong;
2010 pub fn _nmod_poly_invsqrt_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2011 pub fn nmod_poly_invsqrt_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2012 pub fn _nmod_poly_sqrt_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2013 pub fn nmod_poly_sqrt_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2014 pub fn _nmod_poly_sqrt(s: nn_ptr, p: nn_srcptr, len: slong, mod_: nmod_t) -> libc::c_int;
2015 pub fn nmod_poly_sqrt(b: *mut nmod_poly_struct, a: *const nmod_poly_struct) -> libc::c_int;
2016 pub fn _nmod_poly_power_sums_naive(
2017 res: nn_ptr,
2018 poly: nn_srcptr,
2019 len: slong,
2020 n: slong,
2021 mod_: nmod_t,
2022 );
2023 pub fn nmod_poly_power_sums_naive(
2024 res: *mut nmod_poly_struct,
2025 poly: *const nmod_poly_struct,
2026 n: slong,
2027 );
2028 pub fn _nmod_poly_power_sums_schoenhage(
2029 res: nn_ptr,
2030 poly: nn_srcptr,
2031 len: slong,
2032 n: slong,
2033 mod_: nmod_t,
2034 );
2035 pub fn nmod_poly_power_sums_schoenhage(
2036 res: *mut nmod_poly_struct,
2037 poly: *const nmod_poly_struct,
2038 n: slong,
2039 );
2040 pub fn _nmod_poly_power_sums(res: nn_ptr, poly: nn_srcptr, len: slong, n: slong, mod_: nmod_t);
2041 pub fn nmod_poly_power_sums(
2042 res: *mut nmod_poly_struct,
2043 poly: *const nmod_poly_struct,
2044 n: slong,
2045 );
2046 pub fn _nmod_poly_power_sums_to_poly_naive(
2047 res: nn_ptr,
2048 poly: nn_srcptr,
2049 len: slong,
2050 mod_: nmod_t,
2051 );
2052 pub fn nmod_poly_power_sums_to_poly_naive(
2053 res: *mut nmod_poly_struct,
2054 Q: *const nmod_poly_struct,
2055 );
2056 pub fn _nmod_poly_power_sums_to_poly_schoenhage(
2057 res: nn_ptr,
2058 poly: nn_srcptr,
2059 len: slong,
2060 mod_: nmod_t,
2061 );
2062 pub fn nmod_poly_power_sums_to_poly_schoenhage(
2063 res: *mut nmod_poly_struct,
2064 Q: *const nmod_poly_struct,
2065 );
2066 pub fn _nmod_poly_power_sums_to_poly(res: nn_ptr, poly: nn_srcptr, len: slong, mod_: nmod_t);
2067 pub fn nmod_poly_power_sums_to_poly(res: *mut nmod_poly_struct, Q: *const nmod_poly_struct);
2068 pub fn _nmod_poly_atan_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2069 pub fn nmod_poly_atan_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2070 pub fn _nmod_poly_tan_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2071 pub fn nmod_poly_tan_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2072 pub fn _nmod_poly_asin_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2073 pub fn nmod_poly_asin_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2074 pub fn _nmod_poly_sin_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
2075 pub fn nmod_poly_sin_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2076 pub fn _nmod_poly_cos_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
2077 pub fn nmod_poly_cos_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2078 pub fn _nmod_poly_asinh_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2079 pub fn nmod_poly_asinh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2080 pub fn _nmod_poly_atanh_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2081 pub fn nmod_poly_atanh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2082 pub fn _nmod_poly_sinh_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
2083 pub fn nmod_poly_sinh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2084 pub fn _nmod_poly_cosh_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
2085 pub fn nmod_poly_cosh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2086 pub fn _nmod_poly_tanh_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
2087 pub fn nmod_poly_tanh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2088 pub fn _nmod_poly_log_series(res: nn_ptr, f: nn_srcptr, flen: slong, n: slong, mod_: nmod_t);
2089 pub fn nmod_poly_log_series(res: *mut nmod_poly_struct, f: *const nmod_poly_struct, n: slong);
2090 pub fn _nmod_poly_exp_expinv_series(
2091 f: nn_ptr,
2092 g: nn_ptr,
2093 h: nn_srcptr,
2094 hlen: slong,
2095 n: slong,
2096 mod_: nmod_t,
2097 );
2098 pub fn _nmod_poly_exp_series(f: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
2099 pub fn nmod_poly_exp_series(f: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
2100 pub fn _nmod_poly_conway(op: nn_ptr, prime: ulong, deg: slong) -> libc::c_int;
2101 pub fn _nmod_poly_conway_rand(
2102 degree: *mut slong,
2103 state: *mut flint_rand_struct,
2104 type_: libc::c_int,
2105 ) -> ulong;
2106 pub fn nmod_poly_product_roots_nmod_vec(poly: *mut nmod_poly_struct, xs: nn_srcptr, n: slong);
2107 pub fn _nmod_poly_product_roots_nmod_vec(poly: nn_ptr, xs: nn_srcptr, n: slong, mod_: nmod_t);
2108 pub fn _nmod_poly_split_rabin(
2109 a: *mut nmod_poly_struct,
2110 b: *mut nmod_poly_struct,
2111 f: *const nmod_poly_struct,
2112 t: *mut nmod_poly_struct,
2113 t2: *mut nmod_poly_struct,
2114 randstate: *mut flint_rand_struct,
2115 );
2116 pub fn nmod_poly_find_distinct_nonzero_roots(
2117 roots: *mut ulong,
2118 P: *const nmod_poly_struct,
2119 ) -> libc::c_int;
2120 pub fn nmod_poly_multi_crt_init(CRT: *mut nmod_poly_multi_crt_struct);
2121 pub fn nmod_poly_multi_crt_clear(CRT: *mut nmod_poly_multi_crt_struct);
2122 pub fn nmod_poly_multi_crt_precompute(
2123 CRT: *mut nmod_poly_multi_crt_struct,
2124 moduli: *const nmod_poly_struct,
2125 len: slong,
2126 ) -> libc::c_int;
2127 pub fn nmod_poly_multi_crt_precompute_p(
2128 CRT: *mut nmod_poly_multi_crt_struct,
2129 moduli: *const *const nmod_poly_struct,
2130 len: slong,
2131 ) -> libc::c_int;
2132 pub fn nmod_poly_multi_crt_precomp(
2133 output: *mut nmod_poly_struct,
2134 CRT: *const nmod_poly_multi_crt_struct,
2135 values: *const nmod_poly_struct,
2136 );
2137 pub fn nmod_poly_multi_crt_precomp_p(
2138 output: *mut nmod_poly_struct,
2139 CRT: *const nmod_poly_multi_crt_struct,
2140 values: *const *const nmod_poly_struct,
2141 );
2142 pub fn nmod_poly_multi_crt(
2143 output: *mut nmod_poly_struct,
2144 moduli: *const nmod_poly_struct,
2145 values: *const nmod_poly_struct,
2146 len: slong,
2147 ) -> libc::c_int;
2148 #[link_name = "_nmod_poly_multi_crt_local_size__extern"]
2149 pub fn _nmod_poly_multi_crt_local_size(CRT: *const nmod_poly_multi_crt_struct) -> slong;
2150 pub fn _nmod_poly_multi_crt_run(
2151 outputs: *mut nmod_poly_struct,
2152 CRT: *const nmod_poly_multi_crt_struct,
2153 inputs: *const nmod_poly_struct,
2154 );
2155 pub fn _nmod_poly_multi_crt_run_p(
2156 outputs: *mut nmod_poly_struct,
2157 CRT: *const nmod_poly_multi_crt_struct,
2158 inputs: *const *const nmod_poly_struct,
2159 );
2160 pub fn nmod_poly_deflation(input: *const nmod_poly_struct) -> slong;
2161 pub fn nmod_poly_deflate(
2162 result: *mut nmod_poly_struct,
2163 input: *const nmod_poly_struct,
2164 deflation: slong,
2165 );
2166 pub fn nmod_poly_inflate(
2167 result: *mut nmod_poly_struct,
2168 input: *const nmod_poly_struct,
2169 inflation: slong,
2170 );
2171 pub fn _nmod_mat_charpoly_berkowitz(p: nn_ptr, M: *const nmod_mat_struct, mod_: nmod_t);
2172 pub fn nmod_mat_charpoly_berkowitz(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
2173 pub fn nmod_mat_charpoly_danilevsky(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
2174 pub fn nmod_mat_charpoly(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
2175 pub fn nmod_mat_minpoly_with_gens(
2176 p: *mut nmod_poly_struct,
2177 X: *const nmod_mat_struct,
2178 P: *mut ulong,
2179 );
2180 pub fn nmod_mat_minpoly(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
2181 pub fn nmod_berlekamp_massey_init(B: *mut nmod_berlekamp_massey_struct, p: ulong);
2182 pub fn nmod_berlekamp_massey_clear(B: *mut nmod_berlekamp_massey_struct);
2183 pub fn nmod_berlekamp_massey_start_over(B: *mut nmod_berlekamp_massey_struct);
2184 pub fn nmod_berlekamp_massey_set_prime(B: *mut nmod_berlekamp_massey_struct, p: ulong);
2185 pub fn nmod_berlekamp_massey_print(B: *const nmod_berlekamp_massey_struct);
2186 pub fn nmod_berlekamp_massey_add_point(B: *mut nmod_berlekamp_massey_struct, a: ulong);
2187 pub fn nmod_berlekamp_massey_add_points(
2188 B: *mut nmod_berlekamp_massey_struct,
2189 a: *const ulong,
2190 count: slong,
2191 );
2192 pub fn nmod_berlekamp_massey_add_zeros(B: *mut nmod_berlekamp_massey_struct, count: slong);
2193 pub fn nmod_berlekamp_massey_reduce(B: *mut nmod_berlekamp_massey_struct) -> libc::c_int;
2194 #[link_name = "nmod_berlekamp_massey_points__extern"]
2195 pub fn nmod_berlekamp_massey_points(B: *const nmod_berlekamp_massey_struct) -> *const ulong;
2196 #[link_name = "nmod_berlekamp_massey_point_count__extern"]
2197 pub fn nmod_berlekamp_massey_point_count(B: *const nmod_berlekamp_massey_struct) -> slong;
2198 #[link_name = "nmod_berlekamp_massey_V_poly__extern"]
2199 pub fn nmod_berlekamp_massey_V_poly(
2200 B: *const nmod_berlekamp_massey_struct,
2201 ) -> *const nmod_poly_struct;
2202 #[link_name = "nmod_berlekamp_massey_R_poly__extern"]
2203 pub fn nmod_berlekamp_massey_R_poly(
2204 B: *const nmod_berlekamp_massey_struct,
2205 ) -> *const nmod_poly_struct;
2206}