use crate::deps::*;
use crate::flint::*;
use crate::fmpz_mod_types::*;
use crate::fmpz_types::*;
#[repr(C)]
pub struct fmpz_mod_poly_interval_poly_arg_t {
pub baby: *mut fmpz_mod_poly_struct,
pub res: *mut fmpz_mod_poly_struct,
pub H: *mut fmpz_mod_poly_struct,
pub v: *mut fmpz_mod_poly_struct,
pub vinv: *mut fmpz_mod_poly_struct,
pub ctx: *const fmpz_mod_ctx_struct,
pub tmp: *mut fmpz,
pub m: slong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of fmpz_mod_poly_interval_poly_arg_t"]
[::std::mem::size_of::<fmpz_mod_poly_interval_poly_arg_t>() - 64usize];
["Alignment of fmpz_mod_poly_interval_poly_arg_t"]
[::std::mem::align_of::<fmpz_mod_poly_interval_poly_arg_t>() - 8usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::baby"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, baby) - 0usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::res"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, res) - 8usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::H"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, H) - 16usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::v"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, v) - 24usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::vinv"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, vinv) - 32usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::ctx"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, ctx) - 40usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::tmp"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, tmp) - 48usize];
["Offset of field: fmpz_mod_poly_interval_poly_arg_t::m"]
[::std::mem::offset_of!(fmpz_mod_poly_interval_poly_arg_t, m) - 56usize];
};
impl Default for fmpz_mod_poly_interval_poly_arg_t {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
extern "C" {
pub fn fmpz_mod_poly_factor_init(
fac: *mut fmpz_mod_poly_factor_struct,
UNUSED_ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_clear(
fac: *mut fmpz_mod_poly_factor_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_realloc(
fac: *mut fmpz_mod_poly_factor_struct,
alloc: slong,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_fit_length(
fac: *mut fmpz_mod_poly_factor_struct,
len: slong,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_set(
res: *mut fmpz_mod_poly_factor_struct,
fac: *const fmpz_mod_poly_factor_struct,
ctx: *const fmpz_mod_ctx_struct,
);
#[link_name = "fmpz_mod_poly_factor_swap__extern"]
pub fn fmpz_mod_poly_factor_swap(
a: *mut fmpz_mod_poly_factor_struct,
b: *mut fmpz_mod_poly_factor_struct,
UNUSED_ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_get_poly(
a: *mut fmpz_mod_poly_struct,
b: *const fmpz_mod_poly_factor_struct,
i: slong,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_insert(
fac: *mut fmpz_mod_poly_factor_struct,
poly: *const fmpz_mod_poly_struct,
exp: slong,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_print(
fac: *const fmpz_mod_poly_factor_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_print_pretty(
fac: *const fmpz_mod_poly_factor_struct,
var: *const libc::c_char,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_concat(
res: *mut fmpz_mod_poly_factor_struct,
fac: *const fmpz_mod_poly_factor_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_pow(
fac: *mut fmpz_mod_poly_factor_struct,
exp: slong,
UNUSED_ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_is_irreducible(
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_is_irreducible_ddf(
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_is_irreducible_rabin(
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_is_irreducible_rabin_f(
fac: *mut fmpz,
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn _fmpz_mod_poly_is_squarefree(
f: *const fmpz,
len: slong,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn _fmpz_mod_poly_is_squarefree_f(
fac: *mut fmpz,
f: *const fmpz,
len: slong,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_is_squarefree(
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_is_squarefree_f(
fac: *mut fmpz,
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_factor_equal_deg_prob(
factor: *mut fmpz_mod_poly_struct,
state: *mut flint_rand_struct,
pol: *const fmpz_mod_poly_struct,
d: slong,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_factor_equal_deg_with_frob(
factors: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
d: slong,
frob: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_equal_deg(
factors: *mut fmpz_mod_poly_factor_struct,
pol: *const fmpz_mod_poly_struct,
d: slong,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_distinct_deg_with_frob(
res: *mut fmpz_mod_poly_factor_struct,
poly: *const fmpz_mod_poly_struct,
polyinv: *const fmpz_mod_poly_struct,
frob: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_distinct_deg(
res: *mut fmpz_mod_poly_factor_struct,
poly: *const fmpz_mod_poly_struct,
degs: *const *mut slong,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_distinct_deg_threaded_with_frob(
res: *mut fmpz_mod_poly_factor_struct,
poly: *const fmpz_mod_poly_struct,
polyinv: *const fmpz_mod_poly_struct,
frob: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_distinct_deg_threaded(
res: *mut fmpz_mod_poly_factor_struct,
poly: *const fmpz_mod_poly_struct,
degs: *const *mut slong,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_squarefree(
res: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor(
res: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_cantor_zassenhaus(
res: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_kaltofen_shoup(
res: *mut fmpz_mod_poly_factor_struct,
poly: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_factor_berlekamp(
factors: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn _fmpz_mod_poly_interval_poly_worker(arg_ptr: *mut libc::c_void);
pub fn fmpz_mod_poly_roots(
r: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
with_multiplicity: libc::c_int,
ctx: *const fmpz_mod_ctx_struct,
);
pub fn fmpz_mod_poly_roots_factored(
r: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
with_multiplicity: libc::c_int,
n: *const fmpz_factor_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_roots_factored_with_length_limit(
x0: *mut fmpz_mod_poly_factor_struct,
f: *const fmpz_mod_poly_struct,
with_mult: libc::c_int,
length_limit: slong,
fac: *const fmpz_factor_struct,
ctx: *const fmpz_mod_ctx_struct,
) -> libc::c_int;
pub fn fmpz_mod_poly_factor_get_fmpz_mod_poly(
z: *mut fmpz_mod_poly_struct,
fac: *mut fmpz_mod_poly_factor_struct,
i: slong,
ctx: *const fmpz_mod_ctx_struct,
);
}