use libc::*;
use crate::deps::*;
use crate::flint::*;
use crate::nmod_types::*;
pub const NMOD_POLY_MULMOD_PRECOND_NONE: u32 = 0;
pub const NMOD_POLY_MULMOD_PRECOND_SHOUP: u32 = 1;
pub const NMOD_POLY_MULMOD_PRECOND_MATRIX: u32 = 2;
#[repr(C)]
pub struct nmod_poly_res_struct {
pub res: ulong,
pub lc: ulong,
pub len0: slong,
pub len1: slong,
pub off: slong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of nmod_poly_res_struct"][::std::mem::size_of::<nmod_poly_res_struct>() - 40usize];
["Alignment of nmod_poly_res_struct"][::std::mem::align_of::<nmod_poly_res_struct>() - 8usize];
["Offset of field: nmod_poly_res_struct::res"]
[::std::mem::offset_of!(nmod_poly_res_struct, res) - 0usize];
["Offset of field: nmod_poly_res_struct::lc"]
[::std::mem::offset_of!(nmod_poly_res_struct, lc) - 8usize];
["Offset of field: nmod_poly_res_struct::len0"]
[::std::mem::offset_of!(nmod_poly_res_struct, len0) - 16usize];
["Offset of field: nmod_poly_res_struct::len1"]
[::std::mem::offset_of!(nmod_poly_res_struct, len1) - 24usize];
["Offset of field: nmod_poly_res_struct::off"]
[::std::mem::offset_of!(nmod_poly_res_struct, off) - 32usize];
};
impl Default for nmod_poly_res_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 nmod_poly_res_t = [nmod_poly_res_struct; 1usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nmod_poly_matrix_precompute_arg_t {
pub A: *mut nmod_mat_struct,
pub poly1: *mut nmod_poly_struct,
pub poly2: *mut nmod_poly_struct,
pub poly2inv: *mut nmod_poly_struct,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of nmod_poly_matrix_precompute_arg_t"]
[::std::mem::size_of::<nmod_poly_matrix_precompute_arg_t>() - 32usize];
["Alignment of nmod_poly_matrix_precompute_arg_t"]
[::std::mem::align_of::<nmod_poly_matrix_precompute_arg_t>() - 8usize];
["Offset of field: nmod_poly_matrix_precompute_arg_t::A"]
[::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, A) - 0usize];
["Offset of field: nmod_poly_matrix_precompute_arg_t::poly1"]
[::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, poly1) - 8usize];
["Offset of field: nmod_poly_matrix_precompute_arg_t::poly2"]
[::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, poly2) - 16usize];
["Offset of field: nmod_poly_matrix_precompute_arg_t::poly2inv"]
[::std::mem::offset_of!(nmod_poly_matrix_precompute_arg_t, poly2inv) - 24usize];
};
impl Default for nmod_poly_matrix_precompute_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()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nmod_poly_compose_mod_precomp_preinv_arg_t {
pub A: *mut nmod_mat_struct,
pub res: *mut nmod_poly_struct,
pub poly1: *mut nmod_poly_struct,
pub poly3: *mut nmod_poly_struct,
pub poly3inv: *mut nmod_poly_struct,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of nmod_poly_compose_mod_precomp_preinv_arg_t"]
[::std::mem::size_of::<nmod_poly_compose_mod_precomp_preinv_arg_t>() - 40usize];
["Alignment of nmod_poly_compose_mod_precomp_preinv_arg_t"]
[::std::mem::align_of::<nmod_poly_compose_mod_precomp_preinv_arg_t>() - 8usize];
["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::A"]
[::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, A) - 0usize];
["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::res"]
[::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, res) - 8usize];
["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::poly1"]
[::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, poly1) - 16usize];
["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::poly3"]
[::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, poly3) - 24usize];
["Offset of field: nmod_poly_compose_mod_precomp_preinv_arg_t::poly3inv"]
[::std::mem::offset_of!(nmod_poly_compose_mod_precomp_preinv_arg_t, poly3inv) - 32usize];
};
impl Default for nmod_poly_compose_mod_precomp_preinv_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()
}
}
}
#[repr(C)]
pub struct nmod_geometric_progression_struct {
pub x: nn_ptr,
pub t: nn_ptr,
pub w: nn_ptr,
pub y: nn_ptr,
pub z: nn_ptr,
pub f: nmod_poly_t,
pub g1: nmod_poly_t,
pub g2: nmod_poly_t,
pub mod_: nmod_t,
pub len: slong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of nmod_geometric_progression_struct"]
[::std::mem::size_of::<nmod_geometric_progression_struct>() - 216usize];
["Alignment of nmod_geometric_progression_struct"]
[::std::mem::align_of::<nmod_geometric_progression_struct>() - 8usize];
["Offset of field: nmod_geometric_progression_struct::x"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, x) - 0usize];
["Offset of field: nmod_geometric_progression_struct::t"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, t) - 8usize];
["Offset of field: nmod_geometric_progression_struct::w"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, w) - 16usize];
["Offset of field: nmod_geometric_progression_struct::y"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, y) - 24usize];
["Offset of field: nmod_geometric_progression_struct::z"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, z) - 32usize];
["Offset of field: nmod_geometric_progression_struct::f"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, f) - 40usize];
["Offset of field: nmod_geometric_progression_struct::g1"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, g1) - 88usize];
["Offset of field: nmod_geometric_progression_struct::g2"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, g2) - 136usize];
["Offset of field: nmod_geometric_progression_struct::mod_"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, mod_) - 184usize];
["Offset of field: nmod_geometric_progression_struct::len"]
[::std::mem::offset_of!(nmod_geometric_progression_struct, len) - 208usize];
};
impl Default for nmod_geometric_progression_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 nmod_geometric_progression_t = [nmod_geometric_progression_struct; 1usize];
#[repr(C)]
pub struct nmod_poly_mulmod_precond_struct {
pub method: libc::c_int,
pub n: slong,
pub a: nn_srcptr,
pub alen: slong,
pub d: nn_srcptr,
pub dinv: nn_srcptr,
pub lendinv: slong,
pub adivd: nn_ptr,
pub matrix: nn_ptr,
pub packing: libc::c_int,
pub dot_params: dot_params_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of nmod_poly_mulmod_precond_struct"]
[::std::mem::size_of::<nmod_poly_mulmod_precond_struct>() - 96usize];
["Alignment of nmod_poly_mulmod_precond_struct"]
[::std::mem::align_of::<nmod_poly_mulmod_precond_struct>() - 8usize];
["Offset of field: nmod_poly_mulmod_precond_struct::method"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, method) - 0usize];
["Offset of field: nmod_poly_mulmod_precond_struct::n"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, n) - 8usize];
["Offset of field: nmod_poly_mulmod_precond_struct::a"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, a) - 16usize];
["Offset of field: nmod_poly_mulmod_precond_struct::alen"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, alen) - 24usize];
["Offset of field: nmod_poly_mulmod_precond_struct::d"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, d) - 32usize];
["Offset of field: nmod_poly_mulmod_precond_struct::dinv"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, dinv) - 40usize];
["Offset of field: nmod_poly_mulmod_precond_struct::lendinv"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, lendinv) - 48usize];
["Offset of field: nmod_poly_mulmod_precond_struct::adivd"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, adivd) - 56usize];
["Offset of field: nmod_poly_mulmod_precond_struct::matrix"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, matrix) - 64usize];
["Offset of field: nmod_poly_mulmod_precond_struct::packing"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, packing) - 72usize];
["Offset of field: nmod_poly_mulmod_precond_struct::dot_params"]
[::std::mem::offset_of!(nmod_poly_mulmod_precond_struct, dot_params) - 80usize];
};
impl Default for nmod_poly_mulmod_precond_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 nmod_poly_mulmod_precond_t = [nmod_poly_mulmod_precond_struct; 1usize];
#[repr(C)]
pub struct _nmod_poly_multi_crt_prog_instr {
pub a_idx: slong,
pub b_idx: slong,
pub c_idx: slong,
pub idem: nmod_poly_t,
pub modulus: nmod_poly_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of _nmod_poly_multi_crt_prog_instr"]
[::std::mem::size_of::<_nmod_poly_multi_crt_prog_instr>() - 120usize];
["Alignment of _nmod_poly_multi_crt_prog_instr"]
[::std::mem::align_of::<_nmod_poly_multi_crt_prog_instr>() - 8usize];
["Offset of field: _nmod_poly_multi_crt_prog_instr::a_idx"]
[::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, a_idx) - 0usize];
["Offset of field: _nmod_poly_multi_crt_prog_instr::b_idx"]
[::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, b_idx) - 8usize];
["Offset of field: _nmod_poly_multi_crt_prog_instr::c_idx"]
[::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, c_idx) - 16usize];
["Offset of field: _nmod_poly_multi_crt_prog_instr::idem"]
[::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, idem) - 24usize];
["Offset of field: _nmod_poly_multi_crt_prog_instr::modulus"]
[::std::mem::offset_of!(_nmod_poly_multi_crt_prog_instr, modulus) - 72usize];
};
impl Default for _nmod_poly_multi_crt_prog_instr {
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()
}
}
}
#[repr(C)]
pub struct nmod_poly_multi_crt_struct {
pub prog: *mut _nmod_poly_multi_crt_prog_instr,
pub length: slong,
pub alloc: slong,
pub localsize: slong,
pub temp1loc: slong,
pub temp2loc: slong,
pub good: libc::c_int,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of nmod_poly_multi_crt_struct"]
[::std::mem::size_of::<nmod_poly_multi_crt_struct>() - 56usize];
["Alignment of nmod_poly_multi_crt_struct"]
[::std::mem::align_of::<nmod_poly_multi_crt_struct>() - 8usize];
["Offset of field: nmod_poly_multi_crt_struct::prog"]
[::std::mem::offset_of!(nmod_poly_multi_crt_struct, prog) - 0usize];
["Offset of field: nmod_poly_multi_crt_struct::length"]
[::std::mem::offset_of!(nmod_poly_multi_crt_struct, length) - 8usize];
["Offset of field: nmod_poly_multi_crt_struct::alloc"]
[::std::mem::offset_of!(nmod_poly_multi_crt_struct, alloc) - 16usize];
["Offset of field: nmod_poly_multi_crt_struct::localsize"]
[::std::mem::offset_of!(nmod_poly_multi_crt_struct, localsize) - 24usize];
["Offset of field: nmod_poly_multi_crt_struct::temp1loc"]
[::std::mem::offset_of!(nmod_poly_multi_crt_struct, temp1loc) - 32usize];
["Offset of field: nmod_poly_multi_crt_struct::temp2loc"]
[::std::mem::offset_of!(nmod_poly_multi_crt_struct, temp2loc) - 40usize];
["Offset of field: nmod_poly_multi_crt_struct::good"]
[::std::mem::offset_of!(nmod_poly_multi_crt_struct, good) - 48usize];
};
impl Default for nmod_poly_multi_crt_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 nmod_poly_multi_crt_t = [nmod_poly_multi_crt_struct; 1usize];
#[repr(C)]
pub struct nmod_berlekamp_massey_struct {
pub npoints: slong,
pub R0: nmod_poly_t,
pub R1: nmod_poly_t,
pub V0: nmod_poly_t,
pub V1: nmod_poly_t,
pub qt: nmod_poly_t,
pub rt: nmod_poly_t,
pub points: nmod_poly_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of nmod_berlekamp_massey_struct"]
[::std::mem::size_of::<nmod_berlekamp_massey_struct>() - 344usize];
["Alignment of nmod_berlekamp_massey_struct"]
[::std::mem::align_of::<nmod_berlekamp_massey_struct>() - 8usize];
["Offset of field: nmod_berlekamp_massey_struct::npoints"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, npoints) - 0usize];
["Offset of field: nmod_berlekamp_massey_struct::R0"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, R0) - 8usize];
["Offset of field: nmod_berlekamp_massey_struct::R1"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, R1) - 56usize];
["Offset of field: nmod_berlekamp_massey_struct::V0"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, V0) - 104usize];
["Offset of field: nmod_berlekamp_massey_struct::V1"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, V1) - 152usize];
["Offset of field: nmod_berlekamp_massey_struct::qt"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, qt) - 200usize];
["Offset of field: nmod_berlekamp_massey_struct::rt"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, rt) - 248usize];
["Offset of field: nmod_berlekamp_massey_struct::points"]
[::std::mem::offset_of!(nmod_berlekamp_massey_struct, points) - 296usize];
};
impl Default for nmod_berlekamp_massey_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 nmod_berlekamp_massey_t = [nmod_berlekamp_massey_struct; 1usize];
extern "C" {
pub fn nmod_poly_init(poly: *mut nmod_poly_struct, n: ulong);
pub fn nmod_poly_init_preinv(poly: *mut nmod_poly_struct, n: ulong, ninv: ulong);
pub fn nmod_poly_init2(poly: *mut nmod_poly_struct, n: ulong, alloc: slong);
pub fn nmod_poly_init2_preinv(poly: *mut nmod_poly_struct, n: ulong, ninv: ulong, alloc: slong);
pub fn nmod_poly_realloc(poly: *mut nmod_poly_struct, alloc: slong);
pub fn nmod_poly_clear(poly: *mut nmod_poly_struct);
pub fn nmod_poly_fit_length(poly: *mut nmod_poly_struct, alloc: slong);
#[link_name = "nmod_poly_init_mod__extern"]
pub fn nmod_poly_init_mod(poly: *mut nmod_poly_struct, mod_: nmod_t);
#[link_name = "nmod_poly_set_mod__extern"]
pub fn nmod_poly_set_mod(poly: *mut nmod_poly_struct, mod_: nmod_t);
#[link_name = "_nmod_poly_set_length__extern"]
pub fn _nmod_poly_set_length(poly: *mut nmod_poly_struct, len: slong);
#[link_name = "_nmod_poly_normalise__extern"]
pub fn _nmod_poly_normalise(poly: *mut nmod_poly_struct);
#[link_name = "nmod_poly_length__extern"]
pub fn nmod_poly_length(poly: *const nmod_poly_struct) -> slong;
#[link_name = "nmod_poly_degree__extern"]
pub fn nmod_poly_degree(poly: *const nmod_poly_struct) -> slong;
#[link_name = "nmod_poly_modulus__extern"]
pub fn nmod_poly_modulus(poly: *const nmod_poly_struct) -> ulong;
pub fn nmod_poly_max_bits(poly: *const nmod_poly_struct) -> flint_bitcnt_t;
#[link_name = "nmod_poly_lead__extern"]
pub fn nmod_poly_lead(poly: *const nmod_poly_struct) -> nn_ptr;
pub fn nmod_poly_set(a: *mut nmod_poly_struct, b: *const nmod_poly_struct);
#[link_name = "nmod_poly_swap__extern"]
pub fn nmod_poly_swap(poly1: *mut nmod_poly_struct, poly2: *mut nmod_poly_struct);
#[link_name = "nmod_poly_zero__extern"]
pub fn nmod_poly_zero(res: *mut nmod_poly_struct);
#[link_name = "nmod_poly_one__extern"]
pub fn nmod_poly_one(res: *mut nmod_poly_struct);
pub fn nmod_poly_set_trunc(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
len: slong,
);
#[link_name = "nmod_poly_truncate__extern"]
pub fn nmod_poly_truncate(poly: *mut nmod_poly_struct, len: slong);
pub fn _nmod_poly_reverse(output: nn_ptr, input: nn_srcptr, len: slong, m: slong);
pub fn nmod_poly_reverse(
output: *mut nmod_poly_struct,
input: *const nmod_poly_struct,
m: slong,
);
pub fn nmod_poly_equal(a: *const nmod_poly_struct, b: *const nmod_poly_struct) -> libc::c_int;
pub fn nmod_poly_equal_nmod(poly: *const nmod_poly_struct, cst: ulong) -> libc::c_int;
pub fn nmod_poly_equal_ui(poly: *const nmod_poly_struct, cst: ulong) -> libc::c_int;
pub fn nmod_poly_equal_trunc(
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
n: slong,
) -> libc::c_int;
#[link_name = "nmod_poly_is_zero__extern"]
pub fn nmod_poly_is_zero(poly: *const nmod_poly_struct) -> libc::c_int;
#[link_name = "nmod_poly_is_one__extern"]
pub fn nmod_poly_is_one(poly: *const nmod_poly_struct) -> libc::c_int;
#[link_name = "nmod_poly_is_unit__extern"]
pub fn nmod_poly_is_unit(poly: *const nmod_poly_struct) -> libc::c_int;
#[link_name = "nmod_poly_is_gen__extern"]
pub fn nmod_poly_is_gen(poly: *const nmod_poly_struct) -> libc::c_int;
#[link_name = "nmod_poly_is_monic__extern"]
pub fn nmod_poly_is_monic(poly: *const nmod_poly_struct) -> libc::c_int;
pub fn nmod_poly_randtest(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
#[link_name = "nmod_poly_randtest_not_zero__extern"]
pub fn nmod_poly_randtest_not_zero(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
pub fn nmod_poly_minimal_irreducible(res: *mut nmod_poly_struct, n: ulong);
pub fn nmod_poly_randtest_irreducible(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
pub fn nmod_poly_randtest_monic(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
pub fn nmod_poly_randtest_monic_irreducible(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
pub fn nmod_poly_randtest_monic_primitive(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
pub fn nmod_poly_randtest_trinomial(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
pub fn nmod_poly_randtest_trinomial_irreducible(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
max_attempts: slong,
) -> libc::c_int;
pub fn nmod_poly_randtest_pentomial(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
pub fn nmod_poly_randtest_pentomial_irreducible(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
max_attempts: slong,
) -> libc::c_int;
pub fn nmod_poly_randtest_sparse_irreducible(
poly: *mut nmod_poly_struct,
state: *mut flint_rand_struct,
len: slong,
);
#[link_name = "nmod_poly_get_coeff_ui__extern"]
pub fn nmod_poly_get_coeff_ui(poly: *const nmod_poly_struct, j: slong) -> ulong;
pub fn nmod_poly_set_coeff_ui(poly: *mut nmod_poly_struct, j: slong, c: ulong);
pub fn nmod_poly_get_str(poly: *const nmod_poly_struct) -> *mut libc::c_char;
pub fn nmod_poly_get_str_pretty(
poly: *const nmod_poly_struct,
x: *const libc::c_char,
) -> *mut libc::c_char;
pub fn nmod_poly_set_str(poly: *mut nmod_poly_struct, s: *const libc::c_char) -> libc::c_int;
pub fn nmod_poly_fprint(f: *mut FILE, poly: *const nmod_poly_struct) -> libc::c_int;
pub fn nmod_poly_fprint_pretty(
f: *mut FILE,
a: *const nmod_poly_struct,
x: *const libc::c_char,
) -> libc::c_int;
pub fn nmod_poly_fread(f: *mut FILE, poly: *mut nmod_poly_struct) -> libc::c_int;
pub fn nmod_poly_print(a: *const nmod_poly_struct) -> libc::c_int;
pub fn nmod_poly_print_pretty(
a: *const nmod_poly_struct,
x: *const libc::c_char,
) -> libc::c_int;
pub fn nmod_poly_read(poly: *mut nmod_poly_struct) -> libc::c_int;
pub fn _nmod_poly_shift_left(res: nn_ptr, poly: nn_srcptr, len: slong, k: slong);
pub fn nmod_poly_shift_left(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
k: slong,
);
pub fn _nmod_poly_shift_right(res: nn_ptr, poly: nn_srcptr, len: slong, k: slong);
pub fn nmod_poly_shift_right(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
k: slong,
);
pub fn _nmod_poly_add(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_add(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_sub(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_sub(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn nmod_poly_add_series(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
n: slong,
);
pub fn nmod_poly_sub_series(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
n: slong,
);
pub fn nmod_poly_add_ui(res: *mut nmod_poly_struct, poly: *const nmod_poly_struct, c: ulong);
pub fn nmod_poly_sub_ui(res: *mut nmod_poly_struct, poly: *const nmod_poly_struct, c: ulong);
pub fn nmod_poly_neg(res: *mut nmod_poly_struct, poly1: *const nmod_poly_struct);
pub fn nmod_poly_scalar_mul_nmod(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
c: ulong,
);
pub fn nmod_poly_scalar_addmul_nmod(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
c: ulong,
);
pub fn _nmod_poly_make_monic(output: nn_ptr, input: nn_srcptr, len: slong, mod_: nmod_t);
pub fn nmod_poly_make_monic(output: *mut nmod_poly_struct, input: *const nmod_poly_struct);
pub fn _nmod_poly_KS2_pack1(
res: nn_ptr,
op: nn_srcptr,
n: slong,
s: slong,
b: ulong,
k: ulong,
r: slong,
);
pub fn _nmod_poly_KS2_pack(
res: nn_ptr,
op: nn_srcptr,
n: slong,
s: slong,
b: ulong,
k: ulong,
r: slong,
);
pub fn _nmod_poly_KS2_unpack1(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
pub fn _nmod_poly_KS2_unpack2(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
pub fn _nmod_poly_KS2_unpack3(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
pub fn _nmod_poly_KS2_unpack(res: nn_ptr, op: nn_srcptr, n: slong, b: ulong, k: ulong);
pub fn _nmod_poly_KS2_reduce(
res: nn_ptr,
s: slong,
op: nn_srcptr,
n: slong,
w: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_KS2_recover_reduce1(
res: nn_ptr,
s: slong,
op1: nn_srcptr,
op2: nn_srcptr,
n: slong,
b: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_KS2_recover_reduce2(
res: nn_ptr,
s: slong,
op1: nn_srcptr,
op2: nn_srcptr,
n: slong,
b: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_KS2_recover_reduce2b(
res: nn_ptr,
s: slong,
op1: nn_srcptr,
op2: nn_srcptr,
n: slong,
UNUSED_b: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_KS2_recover_reduce3(
res: nn_ptr,
s: slong,
op1: nn_srcptr,
op2: nn_srcptr,
n: slong,
b: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_KS2_recover_reduce(
res: nn_ptr,
s: slong,
op1: nn_srcptr,
op2: nn_srcptr,
n: slong,
b: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_bit_pack(res: nn_ptr, poly: nn_srcptr, len: slong, bits: flint_bitcnt_t);
pub fn nmod_poly_bit_pack(
f: *mut fmpz,
poly: *const nmod_poly_struct,
bit_size: flint_bitcnt_t,
);
pub fn _nmod_poly_bit_unpack(
res: nn_ptr,
nlo: slong,
nhi: slong,
mpn: nn_srcptr,
bits: flint_bitcnt_t,
mod_: nmod_t,
);
pub fn nmod_poly_bit_unpack(
poly: *mut nmod_poly_struct,
f: *const fmpz,
bit_size: flint_bitcnt_t,
);
pub fn _nmod_poly_mul_classical(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mul_classical(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_mullow_classical(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
trunc: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mullow_classical(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
trunc: slong,
);
pub fn _nmod_poly_mulhigh_classical(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
start: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulhigh_classical(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
start: slong,
);
pub fn _nmod_poly_mul_KS(
out: nn_ptr,
in1: nn_srcptr,
len1: slong,
in2: nn_srcptr,
len2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mul_KS(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_mul_KS2(
res: nn_ptr,
op1: nn_srcptr,
n1: slong,
op2: nn_srcptr,
n2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mul_KS2(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_mul_KS4(
res: nn_ptr,
op1: nn_srcptr,
n1: slong,
op2: nn_srcptr,
n2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mul_KS4(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_mullow_KS(
out: nn_ptr,
in1: nn_srcptr,
len1: slong,
in2: nn_srcptr,
len2: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mullow_KS(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_mul(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mul(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_mulmid_fft_small_repack(
z: nn_ptr,
a: nn_srcptr,
an: slong,
b: nn_srcptr,
bn: slong,
znlo: slong,
zn: slong,
mod_: nmod_t,
) -> libc::c_int;
pub fn _nmod_poly_mullow_want_fft_small(
len1: slong,
len2: slong,
n: slong,
squaring: libc::c_int,
mod_: nmod_t,
) -> libc::c_int;
pub fn _nmod_poly_mulmid_fft_small(
z: nn_ptr,
a: nn_srcptr,
an: slong,
b: nn_srcptr,
bn: slong,
znlo: slong,
zn: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_mullow_fft_small(
z: nn_ptr,
a: nn_srcptr,
an: slong,
b: nn_srcptr,
bn: slong,
zn: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_mullow(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
trunc: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mullow(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
trunc: slong,
);
pub fn _nmod_poly_mulmid_classical(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulmid_classical(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
nlo: slong,
nhi: slong,
);
pub fn _nmod_poly_mulmid_KS(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulmid_KS(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
nlo: slong,
nhi: slong,
);
pub fn _nmod_poly_mulmid(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulmid(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
nlo: slong,
nhi: slong,
);
pub fn _nmod_poly_mulhigh(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulhigh(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_mulmod(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
f: nn_srcptr,
lenf: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulmod(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
f: *const nmod_poly_struct,
);
pub fn _nmod_poly_mulmod_preinv(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
f: nn_srcptr,
lenf: slong,
finv: nn_srcptr,
lenfinv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulmod_preinv(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
f: *const nmod_poly_struct,
finv: *const nmod_poly_struct,
);
pub fn _nmod_poly_invmod(
A: *mut ulong,
B: *const ulong,
lenB: slong,
P: *const ulong,
lenP: slong,
mod_: nmod_t,
) -> libc::c_int;
pub fn nmod_poly_invmod(
A: *mut nmod_poly_struct,
B: *const nmod_poly_struct,
P: *const nmod_poly_struct,
) -> libc::c_int;
pub fn _nmod_poly_mulmod_precond_init_method(
precond: *mut nmod_poly_mulmod_precond_struct,
a: nn_srcptr,
alen: slong,
d: nn_srcptr,
dlen: slong,
dinv: nn_srcptr,
lendinv: slong,
method: libc::c_int,
mod_: nmod_t,
);
pub fn nmod_poly_mulmod_precond_init_method(
precond: *mut nmod_poly_mulmod_precond_struct,
a: *const nmod_poly_struct,
d: *const nmod_poly_struct,
dinv: *const nmod_poly_struct,
method: libc::c_int,
);
pub fn _nmod_poly_mulmod_precond_init_num(
precond: *mut nmod_poly_mulmod_precond_struct,
a: nn_srcptr,
alen: slong,
d: nn_srcptr,
dlen: slong,
dinv: nn_srcptr,
lendinv: slong,
num: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulmod_precond_init_num(
precond: *mut nmod_poly_mulmod_precond_struct,
a: *const nmod_poly_struct,
d: *const nmod_poly_struct,
dinv: *const nmod_poly_struct,
num: slong,
);
pub fn nmod_poly_mulmod_precond_clear(precond: *mut nmod_poly_mulmod_precond_struct);
pub fn _nmod_poly_mulmod_precond(
res: nn_ptr,
precond: *const nmod_poly_mulmod_precond_struct,
b: nn_srcptr,
blen: slong,
mod_: nmod_t,
);
pub fn nmod_poly_mulmod_precond(
res: *mut nmod_poly_struct,
precond: *const nmod_poly_mulmod_precond_struct,
b: *const nmod_poly_struct,
);
pub fn _nmod_poly_pow_binexp(res: nn_ptr, poly: nn_srcptr, len: slong, e: ulong, mod_: nmod_t);
pub fn nmod_poly_pow_binexp(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
e: ulong,
);
pub fn _nmod_poly_pow(res: nn_ptr, poly: nn_srcptr, len: slong, e: ulong, mod_: nmod_t);
pub fn nmod_poly_pow(res: *mut nmod_poly_struct, poly: *const nmod_poly_struct, e: ulong);
pub fn _nmod_poly_pow_trunc_binexp(
res: nn_ptr,
poly: nn_srcptr,
e: ulong,
trunc: slong,
mod_: nmod_t,
);
pub fn nmod_poly_pow_trunc_binexp(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
e: ulong,
trunc: slong,
);
pub fn _nmod_poly_pow_trunc(res: nn_ptr, poly: nn_srcptr, e: ulong, trunc: slong, mod_: nmod_t);
pub fn nmod_poly_pow_trunc(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
e: ulong,
trunc: slong,
);
pub fn _nmod_poly_powmod_ui_binexp(
res: nn_ptr,
poly: nn_srcptr,
e: ulong,
f: nn_srcptr,
lenf: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powmod_ui_binexp(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
e: ulong,
f: *const nmod_poly_struct,
);
pub fn _nmod_poly_powmod_fmpz_binexp(
res: nn_ptr,
poly: nn_srcptr,
e: *mut fmpz,
f: nn_srcptr,
lenf: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powmod_fmpz_binexp(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
e: *mut fmpz,
f: *const nmod_poly_struct,
);
pub fn _nmod_poly_powmod_ui_binexp_preinv(
res: nn_ptr,
poly: nn_srcptr,
e: ulong,
f: nn_srcptr,
lenf: slong,
finv: nn_srcptr,
lenfinv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powmod_ui_binexp_preinv(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
e: ulong,
f: *const nmod_poly_struct,
finv: *const nmod_poly_struct,
);
pub fn _nmod_poly_powmod_fmpz_binexp_preinv(
res: nn_ptr,
poly: nn_srcptr,
e: *mut fmpz,
f: nn_srcptr,
lenf: slong,
finv: nn_srcptr,
lenfinv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powmod_fmpz_binexp_preinv(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
e: *mut fmpz,
f: *const nmod_poly_struct,
finv: *const nmod_poly_struct,
);
pub fn _nmod_poly_powmod_x_ui_preinv(
res: nn_ptr,
e: ulong,
f: nn_srcptr,
lenf: slong,
finv: nn_srcptr,
lenfinv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powmod_x_ui_preinv(
res: *mut nmod_poly_struct,
e: ulong,
f: *const nmod_poly_struct,
finv: *const nmod_poly_struct,
);
pub fn _nmod_poly_powmod_x_fmpz_preinv(
res: nn_ptr,
e: *mut fmpz,
f: nn_srcptr,
lenf: slong,
finv: nn_srcptr,
lenfinv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powmod_x_fmpz_preinv(
res: *mut nmod_poly_struct,
e: *mut fmpz,
f: *const nmod_poly_struct,
finv: *const nmod_poly_struct,
);
pub fn _nmod_poly_powers_mod_preinv_naive(
res: *mut nn_ptr,
f: nn_srcptr,
flen: slong,
n: slong,
g: nn_srcptr,
glen: slong,
ginv: nn_srcptr,
ginvlen: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powers_mod_naive(
res: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
n: slong,
g: *const nmod_poly_struct,
);
pub fn _nmod_poly_powers_mod_preinv_threaded_pool(
res: *mut nn_ptr,
f: nn_srcptr,
flen: slong,
n: slong,
g: nn_srcptr,
glen: slong,
ginv: nn_srcptr,
ginvlen: slong,
mod_: nmod_t,
threads: *mut thread_pool_handle,
num_threads: slong,
);
pub fn _nmod_poly_powers_mod_preinv_threaded(
res: *mut nn_ptr,
f: nn_srcptr,
flen: slong,
n: slong,
g: nn_srcptr,
glen: slong,
ginv: nn_srcptr,
ginvlen: slong,
mod_: nmod_t,
);
pub fn nmod_poly_powers_mod_bsgs(
res: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
n: slong,
g: *const nmod_poly_struct,
);
pub fn _nmod_poly_divrem_q1_preinv1(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
invL: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_divrem_basecase_preinv1(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
A_len: slong,
B: nn_srcptr,
B_len: slong,
invB: ulong,
mod_: nmod_t,
);
pub fn _nmod_poly_divrem_basecase(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
A_len: slong,
B: nn_srcptr,
B_len: slong,
mod_: nmod_t,
);
pub fn nmod_poly_divrem_basecase(
Q: *mut nmod_poly_struct,
R: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_divrem(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
);
pub fn nmod_poly_divrem(
Q: *mut nmod_poly_struct,
R: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_div(
Q: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
);
pub fn nmod_poly_div(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_rem(
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
);
pub fn nmod_poly_rem(
R: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_divexact(
Q: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
);
pub fn nmod_poly_divexact(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_inv_series_basecase(
Qinv: nn_ptr,
Q: nn_srcptr,
Qlen: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_inv_series_basecase(
Qinv: *mut nmod_poly_struct,
Q: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_inv_series_newton(
Qinv: nn_ptr,
Q: nn_srcptr,
Qlen: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_inv_series_newton(
Qinv: *mut nmod_poly_struct,
Q: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_inv_series(Qinv: nn_ptr, Q: nn_srcptr, Qlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_inv_series(Qinv: *mut nmod_poly_struct, Q: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_div_series_basecase(
Q: nn_ptr,
A: nn_srcptr,
Alen: slong,
B: nn_srcptr,
Blen: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_div_series_basecase(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_div_series(
Q: nn_ptr,
A: nn_srcptr,
Alen: slong,
B: nn_srcptr,
Blen: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_div_series(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_div_newton_n_preinv(
Q: nn_ptr,
A: nn_srcptr,
lenA: slong,
UNUSED_B: nn_srcptr,
lenB: slong,
Binv: nn_srcptr,
lenBinv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_div_newton_n_preinv(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
Binv: *const nmod_poly_struct,
);
pub fn _nmod_poly_divrem_newton_n_preinv(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
Binv: nn_srcptr,
lenBinv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_divrem_newton_n_preinv(
Q: *mut nmod_poly_struct,
R: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
Binv: *const nmod_poly_struct,
);
pub fn _nmod_poly_div_root(
Q: nn_ptr,
A: nn_srcptr,
len: slong,
c: ulong,
mod_: nmod_t,
) -> ulong;
pub fn nmod_poly_div_root(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
c: ulong,
) -> ulong;
pub fn _nmod_poly_divides_classical(
Q: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> libc::c_int;
pub fn nmod_poly_divides_classical(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
) -> libc::c_int;
pub fn _nmod_poly_divides(
Q: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> libc::c_int;
pub fn nmod_poly_divides(
Q: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
) -> libc::c_int;
pub fn nmod_poly_remove(f: *mut nmod_poly_struct, p: *const nmod_poly_struct) -> ulong;
pub fn _nmod_poly_derivative(x_prime: nn_ptr, x: nn_srcptr, len: slong, mod_: nmod_t);
pub fn nmod_poly_derivative(x_prime: *mut nmod_poly_struct, x: *const nmod_poly_struct);
pub fn _nmod_poly_integral(x_int: nn_ptr, x: nn_srcptr, len: slong, mod_: nmod_t);
pub fn nmod_poly_integral(x_int: *mut nmod_poly_struct, x: *const nmod_poly_struct);
pub fn _nmod_poly_evaluate_nmod(poly: nn_srcptr, len: slong, c: ulong, mod_: nmod_t) -> ulong;
pub fn _nmod_poly_evaluate_nmod_precomp(
poly: nn_srcptr,
len: slong,
c: ulong,
c_precomp: ulong,
modn: ulong,
) -> ulong;
pub fn _nmod_poly_evaluate_nmod_precomp_lazy(
poly: nn_srcptr,
len: slong,
c: ulong,
c_precomp: ulong,
modn: ulong,
) -> ulong;
pub fn nmod_poly_evaluate_nmod(poly: *const nmod_poly_struct, c: ulong) -> ulong;
pub fn _nmod_poly_evaluate_nmod_vec(
ys: nn_ptr,
coeffs: nn_srcptr,
len: slong,
xs: nn_srcptr,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_evaluate_nmod_vec(
ys: nn_ptr,
poly: *const nmod_poly_struct,
xs: nn_srcptr,
n: slong,
);
pub fn _nmod_poly_evaluate_nmod_vec_iter(
ys: nn_ptr,
coeffs: nn_srcptr,
len: slong,
xs: nn_srcptr,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_evaluate_nmod_vec_iter(
ys: nn_ptr,
poly: *const nmod_poly_struct,
xs: nn_srcptr,
n: slong,
);
pub fn _nmod_poly_evaluate_nmod_vec_fast_precomp(
vs: nn_ptr,
poly: nn_srcptr,
plen: slong,
tree: *const nn_ptr,
len: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_evaluate_nmod_vec_fast(
ys: nn_ptr,
coeffs: nn_srcptr,
len: slong,
xs: nn_srcptr,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_evaluate_nmod_vec_fast(
ys: nn_ptr,
poly: *const nmod_poly_struct,
xs: nn_srcptr,
n: slong,
);
pub fn nmod_mat_one_addmul(dest: *mut nmod_mat_struct, mat: *const nmod_mat_struct, c: ulong);
pub fn nmod_poly_evaluate_mat_horner(
dest: *mut nmod_mat_struct,
poly: *const nmod_poly_struct,
c: *const nmod_mat_struct,
);
pub fn nmod_poly_evaluate_mat_paterson_stockmeyer(
dest: *mut nmod_mat_struct,
poly: *const nmod_poly_struct,
c: *const nmod_mat_struct,
);
#[link_name = "nmod_poly_evaluate_mat__extern"]
pub fn nmod_poly_evaluate_mat(
dest: *mut nmod_mat_struct,
poly: *const nmod_poly_struct,
c: *const nmod_mat_struct,
);
pub fn _nmod_poly_tree_alloc(len: slong) -> *mut nn_ptr;
pub fn _nmod_poly_tree_free(tree: *mut nn_ptr, len: slong);
pub fn _nmod_poly_tree_build(tree: *mut nn_ptr, roots: nn_srcptr, len: slong, mod_: nmod_t);
pub fn nmod_geometric_progression_init(
G: *mut nmod_geometric_progression_struct,
r: ulong,
len: slong,
mod_: nmod_t,
);
pub fn nmod_geometric_progression_clear(G: *mut nmod_geometric_progression_struct);
pub fn _nmod_poly_evaluate_geometric_nmod_vec_iter(
ys: nn_ptr,
coeffs: nn_srcptr,
len: slong,
r: ulong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_evaluate_geometric_nmod_vec_iter(
ys: nn_ptr,
poly: *const nmod_poly_struct,
r: ulong,
n: slong,
);
pub fn _nmod_poly_evaluate_geometric_nmod_vec_fast_precomp(
vs: nn_ptr,
poly: nn_srcptr,
plen: slong,
G: *const nmod_geometric_progression_struct,
len: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_evaluate_geometric_nmod_vec_fast(
ys: nn_ptr,
coeffs: nn_srcptr,
len: slong,
r: ulong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_evaluate_geometric_nmod_vec_fast(
ys: nn_ptr,
poly: *const nmod_poly_struct,
r: ulong,
n: slong,
);
pub fn _nmod_poly_interpolate_geometric_nmod_vec_fast_precomp(
poly: nn_ptr,
v: nn_srcptr,
G: *const nmod_geometric_progression_struct,
len: slong,
mod_: nmod_t,
);
pub fn nmod_poly_interpolate_geometric_nmod_vec_fast_precomp(
poly: *mut nmod_poly_struct,
v: nn_srcptr,
G: *const nmod_geometric_progression_struct,
len: slong,
);
pub fn nmod_poly_interpolate_geometric_nmod_vec_fast(
poly: *mut nmod_poly_struct,
r: ulong,
ys: nn_srcptr,
n: slong,
);
pub fn _nmod_poly_interpolate_nmod_vec_newton(
poly: nn_ptr,
xs: nn_srcptr,
ys: nn_srcptr,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_interpolate_nmod_vec_newton(
poly: *mut nmod_poly_struct,
xs: nn_srcptr,
ys: nn_srcptr,
n: slong,
);
pub fn _nmod_poly_interpolate_nmod_vec_barycentric(
poly: nn_ptr,
xs: nn_srcptr,
ys: nn_srcptr,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_interpolate_nmod_vec_barycentric(
poly: *mut nmod_poly_struct,
xs: nn_srcptr,
ys: nn_srcptr,
n: slong,
);
pub fn _nmod_poly_interpolate_nmod_vec(
poly: nn_ptr,
xs: nn_srcptr,
ys: nn_srcptr,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_interpolate_nmod_vec(
poly: *mut nmod_poly_struct,
xs: nn_srcptr,
ys: nn_srcptr,
n: slong,
);
pub fn _nmod_poly_interpolate_nmod_vec_fast(
poly: nn_ptr,
xs: nn_srcptr,
ys: nn_srcptr,
len: slong,
mod_: nmod_t,
);
pub fn nmod_poly_interpolate_nmod_vec_fast(
poly: *mut nmod_poly_struct,
xs: nn_srcptr,
ys: nn_srcptr,
n: slong,
);
pub fn _nmod_poly_interpolate_nmod_vec_fast_precomp(
poly: nn_ptr,
ys: nn_srcptr,
tree: *const nn_ptr,
weights: nn_srcptr,
len: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_interpolation_weights(
w: nn_ptr,
tree: *const nn_ptr,
len: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_compose_horner(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose_horner(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
);
pub fn _nmod_poly_taylor_shift_horner(poly: nn_ptr, c: ulong, len: slong, mod_: nmod_t);
pub fn nmod_poly_taylor_shift_horner(
g: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
c: ulong,
);
pub fn _nmod_poly_taylor_shift_convolution(poly: nn_ptr, c: ulong, len: slong, mod_: nmod_t);
pub fn nmod_poly_taylor_shift_convolution(
g: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
c: ulong,
);
pub fn _nmod_poly_taylor_shift(poly: nn_ptr, c: ulong, len: slong, mod_: nmod_t);
pub fn nmod_poly_taylor_shift(g: *mut nmod_poly_struct, f: *const nmod_poly_struct, c: ulong);
pub fn _nmod_poly_mod_matrix_rows_evaluate(
res: nn_ptr,
A: *const nmod_mat_struct,
h: nn_srcptr,
n: slong,
poly3: nn_srcptr,
len3: slong,
poly3inv: nn_srcptr,
len3inv: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_compose_mod_brent_kung(
res: nn_ptr,
f: nn_srcptr,
lenf: slong,
g: nn_srcptr,
h: nn_srcptr,
lenh: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose_mod_brent_kung(
res: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
g: *const nmod_poly_struct,
h: *const nmod_poly_struct,
);
pub fn _nmod_poly_reduce_matrix_mod_poly(
A: *mut nmod_mat_struct,
B: *const nmod_mat_struct,
f: *const nmod_poly_struct,
);
pub fn _nmod_poly_precompute_matrix(
A: *mut nmod_mat_struct,
poly1: nn_srcptr,
poly2: nn_srcptr,
len2: slong,
poly2inv: nn_srcptr,
len2inv: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_precompute_matrix_worker(arg_ptr: *mut libc::c_void);
pub fn nmod_poly_precompute_matrix(
A: *mut nmod_mat_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
poly2inv: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose_mod_brent_kung_precomp_preinv(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
A: *const nmod_mat_struct,
poly3: nn_srcptr,
len3: slong,
poly3inv: nn_srcptr,
len3inv: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_compose_mod_brent_kung_precomp_preinv_worker(arg_ptr: *mut libc::c_void);
pub fn nmod_poly_compose_mod_brent_kung_precomp_preinv(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
A: *const nmod_mat_struct,
poly3: *const nmod_poly_struct,
poly3inv: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose_mod_brent_kung_preinv(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
poly3: nn_srcptr,
len3: slong,
poly3inv: nn_srcptr,
len3inv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose_mod_brent_kung_preinv(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
poly3: *const nmod_poly_struct,
poly3inv: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv(
res: *mut nmod_poly_struct,
polys: *const nmod_poly_struct,
UNUSED_lenpolys: slong,
l: slong,
g: nn_srcptr,
glen: slong,
poly: nn_srcptr,
len: slong,
polyinv: nn_srcptr,
leninv: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose_mod_brent_kung_vec_preinv(
res: *mut nmod_poly_struct,
polys: *const nmod_poly_struct,
len1: slong,
n: slong,
g: *const nmod_poly_struct,
poly: *const nmod_poly_struct,
polyinv: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv_worker(arg_ptr: *mut libc::c_void);
pub fn nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
res: *mut nmod_poly_struct,
polys: *const nmod_poly_struct,
len1: slong,
n: slong,
g: *const nmod_poly_struct,
poly: *const nmod_poly_struct,
polyinv: *const nmod_poly_struct,
threads: *mut thread_pool_handle,
num_threads: slong,
);
pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
res: *mut nmod_poly_struct,
polys: *const nmod_poly_struct,
UNUSED_lenpolys: slong,
l: slong,
g: nn_srcptr,
glen: slong,
poly: nn_srcptr,
len: slong,
polyinv: nn_srcptr,
leninv: slong,
mod_: nmod_t,
threads: *mut thread_pool_handle,
num_threads: slong,
);
pub fn nmod_poly_compose_mod_brent_kung_vec_preinv_threaded(
res: *mut nmod_poly_struct,
polys: *const nmod_poly_struct,
len1: slong,
n: slong,
g: *const nmod_poly_struct,
poly: *const nmod_poly_struct,
polyinv: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose_mod_horner(
res: nn_ptr,
f: nn_srcptr,
lenf: slong,
g: nn_srcptr,
h: nn_srcptr,
lenh: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose_mod_horner(
res: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
g: *const nmod_poly_struct,
h: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose_mod(
res: nn_ptr,
f: nn_srcptr,
lenf: slong,
g: nn_srcptr,
h: nn_srcptr,
lenh: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose_mod(
res: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
g: *const nmod_poly_struct,
h: *const nmod_poly_struct,
);
pub fn _nmod_poly_compose_series(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_compose_series(
res: *mut nmod_poly_struct,
poly1: *const nmod_poly_struct,
poly2: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_revert_series(
Qinv: nn_ptr,
Q: nn_srcptr,
Qlen: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_revert_series(
Qinv: *mut nmod_poly_struct,
Q: *const nmod_poly_struct,
n: slong,
);
#[link_name = "_nmod_poly_hamming_weight__extern"]
pub fn _nmod_poly_hamming_weight(a: nn_srcptr, len: slong) -> slong;
#[link_name = "nmod_poly_hamming_weight__extern"]
pub fn nmod_poly_hamming_weight(A: *const nmod_poly_struct) -> slong;
pub fn nmod_poly_hgcd_iter_recursive_cutoff(mod_: nmod_t) -> slong;
pub fn nmod_poly_hgcd_outer_cutoff(mod_: nmod_t) -> slong;
pub fn nmod_poly_gcd_hgcd_cutoff(mod_: nmod_t) -> slong;
pub fn nmod_poly_xgcd_hgcd_cutoff(mod_: nmod_t) -> slong;
pub fn _nmod_poly_gcd_euclidean(
G: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_gcd_euclidean(
G: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_gcd_euclidean_redc_fast(
G: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_gcd_euclidean_redc_fast(
G: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_hgcd_recursive(
M: *mut nn_ptr,
lenM: *mut slong,
A: nn_ptr,
lenA: *mut slong,
B: nn_ptr,
lenB: *mut slong,
a: nn_srcptr,
lena: slong,
b: nn_srcptr,
lenb: slong,
P: nn_ptr,
mod_: nmod_t,
flag: libc::c_int,
res: *mut nmod_poly_res_struct,
) -> slong;
pub fn nmod_poly_hgcd_ref(
m11: *mut nmod_poly_struct,
m12: *mut nmod_poly_struct,
m21: *mut nmod_poly_struct,
m22: *mut nmod_poly_struct,
A: *mut nmod_poly_struct,
B: *mut nmod_poly_struct,
a: *const nmod_poly_struct,
b: *const nmod_poly_struct,
) -> slong;
pub fn _nmod_poly_hgcd(
M: *mut nn_ptr,
lenM: *mut slong,
A: nn_ptr,
lenA: *mut slong,
B: nn_ptr,
lenB: *mut slong,
a: nn_srcptr,
lena: slong,
b: nn_srcptr,
lenb: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_hgcd(
m11: *mut nmod_poly_struct,
m12: *mut nmod_poly_struct,
m21: *mut nmod_poly_struct,
m22: *mut nmod_poly_struct,
A: *mut nmod_poly_struct,
B: *mut nmod_poly_struct,
a: *const nmod_poly_struct,
b: *const nmod_poly_struct,
) -> slong;
pub fn _nmod_poly_gcd_hgcd(
G: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_gcd_hgcd(
G: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_gcd(
G: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_gcd(
G: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_xgcd_euclidean(
res: nn_ptr,
s: nn_ptr,
t: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_xgcd_euclidean(
G: *mut nmod_poly_struct,
S: *mut nmod_poly_struct,
T: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_xgcd_hgcd(
G: nn_ptr,
S: nn_ptr,
T: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_xgcd_hgcd(
G: *mut nmod_poly_struct,
S: *mut nmod_poly_struct,
T: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_xgcd(
G: nn_ptr,
S: nn_ptr,
T: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_xgcd(
G: *mut nmod_poly_struct,
S: *mut nmod_poly_struct,
T: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_resultant_euclidean(
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
mod_: nmod_t,
) -> ulong;
pub fn nmod_poly_resultant_euclidean(
f: *const nmod_poly_struct,
g: *const nmod_poly_struct,
) -> ulong;
pub fn _nmod_poly_resultant_hgcd(
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> ulong;
pub fn nmod_poly_resultant_hgcd(
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
) -> ulong;
pub fn _nmod_poly_resultant(
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
mod_: nmod_t,
) -> ulong;
pub fn nmod_poly_resultant(A: *const nmod_poly_struct, B: *const nmod_poly_struct) -> ulong;
pub fn _nmod_poly_gcdinv(
G: *mut ulong,
S: *mut ulong,
A: *const ulong,
lenA: slong,
B: *const ulong,
lenB: slong,
mod_: nmod_t,
) -> slong;
pub fn nmod_poly_gcdinv(
G: *mut nmod_poly_struct,
S: *mut nmod_poly_struct,
A: *const nmod_poly_struct,
B: *const nmod_poly_struct,
);
pub fn _nmod_poly_discriminant(poly: nn_srcptr, len: slong, mod_: nmod_t) -> ulong;
pub fn nmod_poly_discriminant(f: *const nmod_poly_struct) -> ulong;
pub fn _nmod_poly_invsqrt_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_invsqrt_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_sqrt_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_sqrt_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_sqrt(s: nn_ptr, p: nn_srcptr, len: slong, mod_: nmod_t) -> libc::c_int;
pub fn nmod_poly_sqrt(b: *mut nmod_poly_struct, a: *const nmod_poly_struct) -> libc::c_int;
pub fn _nmod_poly_power_sums_naive(
res: nn_ptr,
poly: nn_srcptr,
len: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_power_sums_naive(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_power_sums_schoenhage(
res: nn_ptr,
poly: nn_srcptr,
len: slong,
n: slong,
mod_: nmod_t,
);
pub fn nmod_poly_power_sums_schoenhage(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_power_sums(res: nn_ptr, poly: nn_srcptr, len: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_power_sums(
res: *mut nmod_poly_struct,
poly: *const nmod_poly_struct,
n: slong,
);
pub fn _nmod_poly_power_sums_to_poly_naive(
res: nn_ptr,
poly: nn_srcptr,
len: slong,
mod_: nmod_t,
);
pub fn nmod_poly_power_sums_to_poly_naive(
res: *mut nmod_poly_struct,
Q: *const nmod_poly_struct,
);
pub fn _nmod_poly_power_sums_to_poly_schoenhage(
res: nn_ptr,
poly: nn_srcptr,
len: slong,
mod_: nmod_t,
);
pub fn nmod_poly_power_sums_to_poly_schoenhage(
res: *mut nmod_poly_struct,
Q: *const nmod_poly_struct,
);
pub fn _nmod_poly_power_sums_to_poly(res: nn_ptr, poly: nn_srcptr, len: slong, mod_: nmod_t);
pub fn nmod_poly_power_sums_to_poly(res: *mut nmod_poly_struct, Q: *const nmod_poly_struct);
pub fn _nmod_poly_atan_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_atan_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_tan_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_tan_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_asin_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_asin_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_sin_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
pub fn nmod_poly_sin_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_cos_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
pub fn nmod_poly_cos_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_asinh_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_asinh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_atanh_series(g: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_atanh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_sinh_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
pub fn nmod_poly_sinh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_cosh_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
pub fn nmod_poly_cosh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_tanh_series(g: nn_ptr, h: nn_srcptr, n: slong, mod_: nmod_t);
pub fn nmod_poly_tanh_series(g: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_log_series(res: nn_ptr, f: nn_srcptr, flen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_log_series(res: *mut nmod_poly_struct, f: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_exp_expinv_series(
f: nn_ptr,
g: nn_ptr,
h: nn_srcptr,
hlen: slong,
n: slong,
mod_: nmod_t,
);
pub fn _nmod_poly_exp_series(f: nn_ptr, h: nn_srcptr, hlen: slong, n: slong, mod_: nmod_t);
pub fn nmod_poly_exp_series(f: *mut nmod_poly_struct, h: *const nmod_poly_struct, n: slong);
pub fn _nmod_poly_conway(op: nn_ptr, prime: ulong, deg: slong) -> libc::c_int;
pub fn _nmod_poly_conway_rand(
degree: *mut slong,
state: *mut flint_rand_struct,
type_: libc::c_int,
) -> ulong;
pub fn nmod_poly_product_roots_nmod_vec(poly: *mut nmod_poly_struct, xs: nn_srcptr, n: slong);
pub fn _nmod_poly_product_roots_nmod_vec(poly: nn_ptr, xs: nn_srcptr, n: slong, mod_: nmod_t);
pub fn _nmod_poly_split_rabin(
a: *mut nmod_poly_struct,
b: *mut nmod_poly_struct,
f: *const nmod_poly_struct,
t: *mut nmod_poly_struct,
t2: *mut nmod_poly_struct,
randstate: *mut flint_rand_struct,
);
pub fn nmod_poly_find_distinct_nonzero_roots(
roots: *mut ulong,
P: *const nmod_poly_struct,
) -> libc::c_int;
pub fn nmod_poly_multi_crt_init(CRT: *mut nmod_poly_multi_crt_struct);
pub fn nmod_poly_multi_crt_clear(CRT: *mut nmod_poly_multi_crt_struct);
pub fn nmod_poly_multi_crt_precompute(
CRT: *mut nmod_poly_multi_crt_struct,
moduli: *const nmod_poly_struct,
len: slong,
) -> libc::c_int;
pub fn nmod_poly_multi_crt_precompute_p(
CRT: *mut nmod_poly_multi_crt_struct,
moduli: *const *const nmod_poly_struct,
len: slong,
) -> libc::c_int;
pub fn nmod_poly_multi_crt_precomp(
output: *mut nmod_poly_struct,
CRT: *const nmod_poly_multi_crt_struct,
values: *const nmod_poly_struct,
);
pub fn nmod_poly_multi_crt_precomp_p(
output: *mut nmod_poly_struct,
CRT: *const nmod_poly_multi_crt_struct,
values: *const *const nmod_poly_struct,
);
pub fn nmod_poly_multi_crt(
output: *mut nmod_poly_struct,
moduli: *const nmod_poly_struct,
values: *const nmod_poly_struct,
len: slong,
) -> libc::c_int;
#[link_name = "_nmod_poly_multi_crt_local_size__extern"]
pub fn _nmod_poly_multi_crt_local_size(CRT: *const nmod_poly_multi_crt_struct) -> slong;
pub fn _nmod_poly_multi_crt_run(
outputs: *mut nmod_poly_struct,
CRT: *const nmod_poly_multi_crt_struct,
inputs: *const nmod_poly_struct,
);
pub fn _nmod_poly_multi_crt_run_p(
outputs: *mut nmod_poly_struct,
CRT: *const nmod_poly_multi_crt_struct,
inputs: *const *const nmod_poly_struct,
);
pub fn nmod_poly_deflation(input: *const nmod_poly_struct) -> slong;
pub fn nmod_poly_deflate(
result: *mut nmod_poly_struct,
input: *const nmod_poly_struct,
deflation: slong,
);
pub fn nmod_poly_inflate(
result: *mut nmod_poly_struct,
input: *const nmod_poly_struct,
inflation: slong,
);
pub fn _nmod_mat_charpoly_berkowitz(p: nn_ptr, M: *const nmod_mat_struct, mod_: nmod_t);
pub fn nmod_mat_charpoly_berkowitz(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
pub fn nmod_mat_charpoly_danilevsky(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
pub fn nmod_mat_charpoly(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
pub fn nmod_mat_minpoly_with_gens(
p: *mut nmod_poly_struct,
X: *const nmod_mat_struct,
P: *mut ulong,
);
pub fn nmod_mat_minpoly(p: *mut nmod_poly_struct, M: *const nmod_mat_struct);
pub fn nmod_berlekamp_massey_init(B: *mut nmod_berlekamp_massey_struct, p: ulong);
pub fn nmod_berlekamp_massey_clear(B: *mut nmod_berlekamp_massey_struct);
pub fn nmod_berlekamp_massey_start_over(B: *mut nmod_berlekamp_massey_struct);
pub fn nmod_berlekamp_massey_set_prime(B: *mut nmod_berlekamp_massey_struct, p: ulong);
pub fn nmod_berlekamp_massey_print(B: *const nmod_berlekamp_massey_struct);
pub fn nmod_berlekamp_massey_add_point(B: *mut nmod_berlekamp_massey_struct, a: ulong);
pub fn nmod_berlekamp_massey_add_points(
B: *mut nmod_berlekamp_massey_struct,
a: *const ulong,
count: slong,
);
pub fn nmod_berlekamp_massey_add_zeros(B: *mut nmod_berlekamp_massey_struct, count: slong);
pub fn nmod_berlekamp_massey_reduce(B: *mut nmod_berlekamp_massey_struct) -> libc::c_int;
#[link_name = "nmod_berlekamp_massey_points__extern"]
pub fn nmod_berlekamp_massey_points(B: *const nmod_berlekamp_massey_struct) -> *const ulong;
#[link_name = "nmod_berlekamp_massey_point_count__extern"]
pub fn nmod_berlekamp_massey_point_count(B: *const nmod_berlekamp_massey_struct) -> slong;
#[link_name = "nmod_berlekamp_massey_V_poly__extern"]
pub fn nmod_berlekamp_massey_V_poly(
B: *const nmod_berlekamp_massey_struct,
) -> *const nmod_poly_struct;
#[link_name = "nmod_berlekamp_massey_R_poly__extern"]
pub fn nmod_berlekamp_massey_R_poly(
B: *const nmod_berlekamp_massey_struct,
) -> *const nmod_poly_struct;
}