use crate::deps::*;
use crate::flint::*;
use crate::fmpz_types::*;
use crate::nmod_types::*;
#[repr(C)]
pub struct zassenhaus_prune_struct {
pub deg: slong,
pub pos_degs: *mut libc::c_uchar,
pub new_length: slong,
pub new_total: slong,
pub new_degs: *mut slong,
pub alloc: slong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of zassenhaus_prune_struct"][::std::mem::size_of::<zassenhaus_prune_struct>() - 48usize];
["Alignment of zassenhaus_prune_struct"]
[::std::mem::align_of::<zassenhaus_prune_struct>() - 8usize];
["Offset of field: zassenhaus_prune_struct::deg"]
[::std::mem::offset_of!(zassenhaus_prune_struct, deg) - 0usize];
["Offset of field: zassenhaus_prune_struct::pos_degs"]
[::std::mem::offset_of!(zassenhaus_prune_struct, pos_degs) - 8usize];
["Offset of field: zassenhaus_prune_struct::new_length"]
[::std::mem::offset_of!(zassenhaus_prune_struct, new_length) - 16usize];
["Offset of field: zassenhaus_prune_struct::new_total"]
[::std::mem::offset_of!(zassenhaus_prune_struct, new_total) - 24usize];
["Offset of field: zassenhaus_prune_struct::new_degs"]
[::std::mem::offset_of!(zassenhaus_prune_struct, new_degs) - 32usize];
["Offset of field: zassenhaus_prune_struct::alloc"]
[::std::mem::offset_of!(zassenhaus_prune_struct, alloc) - 40usize];
};
impl Default for zassenhaus_prune_struct {
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()
}
}
}
pub type zassenhaus_prune_t = [zassenhaus_prune_struct; 1usize];
extern "C" {
pub fn fmpz_poly_factor_init(fac: *mut fmpz_poly_factor_struct);
pub fn fmpz_poly_factor_init2(fac: *mut fmpz_poly_factor_struct, alloc: slong);
pub fn fmpz_poly_factor_realloc(fac: *mut fmpz_poly_factor_struct, alloc: slong);
pub fn fmpz_poly_factor_fit_length(fac: *mut fmpz_poly_factor_struct, len: slong);
pub fn fmpz_poly_factor_clear(fac: *mut fmpz_poly_factor_struct);
pub fn fmpz_poly_factor_set(
res: *mut fmpz_poly_factor_struct,
fac: *const fmpz_poly_factor_struct,
);
pub fn fmpz_poly_factor_insert(
fac: *mut fmpz_poly_factor_struct,
p: *const fmpz_poly_struct,
exp: slong,
);
pub fn fmpz_poly_factor_concat(
res: *mut fmpz_poly_factor_struct,
fac: *const fmpz_poly_factor_struct,
);
pub fn fmpz_poly_factor_print(fac: *const fmpz_poly_factor_struct);
pub fn fmpz_poly_factor_zassenhaus_recombination(
final_fac: *mut fmpz_poly_factor_struct,
lifted_fac: *const fmpz_poly_factor_struct,
F: *const fmpz_poly_struct,
P: *const fmpz,
exp: slong,
);
pub fn fmpz_poly_factor_squarefree(
fac: *mut fmpz_poly_factor_struct,
F: *const fmpz_poly_struct,
);
pub fn fmpz_poly_factor_mignotte(B: *mut fmpz, f: *const fmpz_poly_struct);
pub fn _fmpz_poly_factor_zassenhaus(
final_fac: *mut fmpz_poly_factor_struct,
exp: slong,
f: *const fmpz_poly_struct,
cutoff: slong,
use_van_hoeij: libc::c_int,
);
pub fn fmpz_poly_factor_zassenhaus(
fac: *mut fmpz_poly_factor_struct,
G: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_factor_quadratic(
fac: *mut fmpz_poly_factor_struct,
f: *const fmpz_poly_struct,
exp: slong,
);
pub fn _fmpz_poly_factor_cubic(
fac: *mut fmpz_poly_factor_struct,
f: *const fmpz_poly_struct,
exp: slong,
);
pub fn _fmpz_poly_factor_CLD_mat(
res: *mut fmpz_mat_struct,
f: *const fmpz_poly_struct,
lifted_fac: *mut fmpz_poly_factor_struct,
P: *mut fmpz,
k: ulong,
) -> slong;
pub fn fmpz_poly_factor_van_hoeij_check_if_solved(
M: *mut fmpz_mat_struct,
final_fac: *mut fmpz_poly_factor_struct,
lifted_fac: *mut fmpz_poly_factor_struct,
f: *const fmpz_poly_struct,
P: *mut fmpz,
exp: slong,
lc: *mut fmpz,
) -> libc::c_int;
pub fn fmpz_poly_factor_van_hoeij(
final_fac: *mut fmpz_poly_factor_struct,
fac: *const nmod_poly_factor_struct,
f: *const fmpz_poly_struct,
exp: slong,
p: ulong,
);
pub fn fmpz_poly_factor(fac: *mut fmpz_poly_factor_struct, G: *const fmpz_poly_struct);
pub fn fmpz_poly_factor_get_fmpz_poly(
z: *mut fmpz_poly_struct,
F: *const fmpz_poly_factor_struct,
i: slong,
);
pub fn fmpz_poly_factor_get_fmpz(z: *mut fmpz, F: *const fmpz_poly_factor_struct);
pub fn zassenhaus_subset_first(s: *mut slong, r: slong, m: slong);
pub fn zassenhaus_subset_next(s: *mut slong, r: slong) -> libc::c_int;
pub fn zassenhaus_subset_next_disjoint(s: *mut slong, r: slong) -> slong;
#[link_name = "zassenhaus_prune_init__extern"]
pub fn zassenhaus_prune_init(Z: *mut zassenhaus_prune_struct);
pub fn zassenhaus_prune_clear(Z: *mut zassenhaus_prune_struct);
pub fn zassenhaus_prune_set_degree(Z: *mut zassenhaus_prune_struct, d: slong);
#[link_name = "zassenhaus_prune_start_add_factors__extern"]
pub fn zassenhaus_prune_start_add_factors(Z: *mut zassenhaus_prune_struct);
pub fn zassenhaus_prune_add_factor(Z: *mut zassenhaus_prune_struct, deg: slong, exp: slong);
pub fn zassenhaus_prune_end_add_factors(Z: *mut zassenhaus_prune_struct);
pub fn zassenhaus_prune_must_be_irreducible(Z: *const zassenhaus_prune_struct) -> libc::c_int;
#[link_name = "zassenhaus_prune_degree_is_possible__extern"]
pub fn zassenhaus_prune_degree_is_possible(
Z: *const zassenhaus_prune_struct,
d: slong,
) -> libc::c_int;
pub fn fmpz_poly_factor_zassenhaus_recombination_with_prune(
final_fac: *mut fmpz_poly_factor_struct,
lifted_fac: *const fmpz_poly_factor_struct,
F: *const fmpz_poly_struct,
P: *const fmpz,
exp: slong,
Z: *const zassenhaus_prune_struct,
);
}