use libc::*;
use crate::deps::*;
use crate::flint::*;
use crate::fmpz_types::*;
use crate::nmod_types::*;
pub const FMPZ_POLY_INV_NEWTON_CUTOFF: u32 = 32;
pub const FMPZ_POLY_SQRT_DIVCONQUER_CUTOFF: u32 = 16;
pub const FMPZ_POLY_SQRTREM_DIVCONQUER_CUTOFF: u32 = 16;
#[repr(C)]
pub struct fmpz_poly_powers_precomp_struct {
pub powers: *mut *mut fmpz,
pub len: slong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of fmpz_poly_powers_precomp_struct"]
[::std::mem::size_of::<fmpz_poly_powers_precomp_struct>() - 16usize];
["Alignment of fmpz_poly_powers_precomp_struct"]
[::std::mem::align_of::<fmpz_poly_powers_precomp_struct>() - 8usize];
["Offset of field: fmpz_poly_powers_precomp_struct::powers"]
[::std::mem::offset_of!(fmpz_poly_powers_precomp_struct, powers) - 0usize];
["Offset of field: fmpz_poly_powers_precomp_struct::len"]
[::std::mem::offset_of!(fmpz_poly_powers_precomp_struct, len) - 8usize];
};
impl Default for fmpz_poly_powers_precomp_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 fmpz_poly_powers_precomp_t = [fmpz_poly_powers_precomp_struct; 1usize];
#[repr(C)]
pub struct fmpz_poly_mul_precache_struct {
pub jj: *mut *mut ulong,
pub n: slong,
pub len2: slong,
pub loglen: slong,
pub bits2: slong,
pub limbs: slong,
pub poly2: fmpz_poly_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of fmpz_poly_mul_precache_struct"]
[::std::mem::size_of::<fmpz_poly_mul_precache_struct>() - 72usize];
["Alignment of fmpz_poly_mul_precache_struct"]
[::std::mem::align_of::<fmpz_poly_mul_precache_struct>() - 8usize];
["Offset of field: fmpz_poly_mul_precache_struct::jj"]
[::std::mem::offset_of!(fmpz_poly_mul_precache_struct, jj) - 0usize];
["Offset of field: fmpz_poly_mul_precache_struct::n"]
[::std::mem::offset_of!(fmpz_poly_mul_precache_struct, n) - 8usize];
["Offset of field: fmpz_poly_mul_precache_struct::len2"]
[::std::mem::offset_of!(fmpz_poly_mul_precache_struct, len2) - 16usize];
["Offset of field: fmpz_poly_mul_precache_struct::loglen"]
[::std::mem::offset_of!(fmpz_poly_mul_precache_struct, loglen) - 24usize];
["Offset of field: fmpz_poly_mul_precache_struct::bits2"]
[::std::mem::offset_of!(fmpz_poly_mul_precache_struct, bits2) - 32usize];
["Offset of field: fmpz_poly_mul_precache_struct::limbs"]
[::std::mem::offset_of!(fmpz_poly_mul_precache_struct, limbs) - 40usize];
["Offset of field: fmpz_poly_mul_precache_struct::poly2"]
[::std::mem::offset_of!(fmpz_poly_mul_precache_struct, poly2) - 48usize];
};
impl Default for fmpz_poly_mul_precache_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 fmpz_poly_mul_precache_t = [fmpz_poly_mul_precache_struct; 1usize];
extern "C" {
pub fn fmpz_poly_init(poly: *mut fmpz_poly_struct);
pub fn fmpz_poly_init2(poly: *mut fmpz_poly_struct, alloc: slong);
pub fn fmpz_poly_realloc(poly: *mut fmpz_poly_struct, alloc: slong);
pub fn fmpz_poly_fit_length(poly: *mut fmpz_poly_struct, len: slong);
pub fn fmpz_poly_clear(poly: *mut fmpz_poly_struct);
pub fn _fmpz_poly_normalise(poly: *mut fmpz_poly_struct);
pub fn _fmpz_poly_set_length(poly: *mut fmpz_poly_struct, newlen: slong);
#[link_name = "fmpz_poly_attach_truncate__extern"]
pub fn fmpz_poly_attach_truncate(
trunc: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
#[link_name = "fmpz_poly_attach_shift__extern"]
pub fn fmpz_poly_attach_shift(
trunc: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
#[link_name = "fmpz_poly_length__extern"]
pub fn fmpz_poly_length(poly: *const fmpz_poly_struct) -> slong;
#[link_name = "fmpz_poly_degree__extern"]
pub fn fmpz_poly_degree(poly: *const fmpz_poly_struct) -> slong;
pub fn fmpz_poly_set(poly1: *mut fmpz_poly_struct, poly2: *const fmpz_poly_struct);
pub fn fmpz_poly_set_ui(poly: *mut fmpz_poly_struct, c: ulong);
pub fn fmpz_poly_set_si(poly: *mut fmpz_poly_struct, c: slong);
pub fn fmpz_poly_set_fmpz(poly: *mut fmpz_poly_struct, c: *const fmpz);
pub fn _fmpz_poly_set_str(poly: *mut fmpz, str_: *const libc::c_char) -> libc::c_int;
pub fn fmpz_poly_set_str(poly: *mut fmpz_poly_struct, str_: *const libc::c_char)
-> libc::c_int;
pub fn _fmpz_poly_get_str(poly: *const fmpz, len: slong) -> *mut libc::c_char;
pub fn fmpz_poly_get_str(poly: *const fmpz_poly_struct) -> *mut libc::c_char;
pub fn _fmpz_poly_get_str_pretty(
poly: *const fmpz,
len: slong,
x: *const libc::c_char,
) -> *mut libc::c_char;
pub fn fmpz_poly_get_str_pretty(
poly: *const fmpz_poly_struct,
x: *const libc::c_char,
) -> *mut libc::c_char;
#[link_name = "fmpz_poly_zero__extern"]
pub fn fmpz_poly_zero(poly: *mut fmpz_poly_struct);
#[link_name = "fmpz_poly_one__extern"]
pub fn fmpz_poly_one(poly: *mut fmpz_poly_struct);
pub fn fmpz_poly_zero_coeffs(poly: *mut fmpz_poly_struct, i: slong, j: slong);
pub fn fmpz_poly_swap(poly1: *mut fmpz_poly_struct, poly2: *mut fmpz_poly_struct);
pub fn _fmpz_poly_reverse(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn fmpz_poly_reverse(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, n: slong);
pub fn _fmpz_poly_deflation(a: *const fmpz, len: slong) -> ulong;
#[link_name = "fmpz_poly_deflation__extern"]
pub fn fmpz_poly_deflation(input: *const fmpz_poly_struct) -> ulong;
pub fn fmpz_poly_deflate(
result: *mut fmpz_poly_struct,
input: *const fmpz_poly_struct,
deflation: ulong,
);
pub fn fmpz_poly_inflate(
result: *mut fmpz_poly_struct,
input: *const fmpz_poly_struct,
inflation: ulong,
);
pub fn fmpz_poly_truncate(poly: *mut fmpz_poly_struct, newlen: slong);
pub fn fmpz_poly_set_trunc(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, n: slong);
pub fn fmpz_poly_randtest(
f: *mut fmpz_poly_struct,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_poly_randtest_unsigned(
f: *mut fmpz_poly_struct,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_poly_randtest_not_zero(
f: *mut fmpz_poly_struct,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_poly_randtest_no_real_root(
p: *mut fmpz_poly_struct,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_poly_randtest_irreducible1(
pol: *mut fmpz_poly_struct,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_poly_randtest_irreducible2(
pol: *mut fmpz_poly_struct,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_poly_randtest_irreducible(
pol: *mut fmpz_poly_struct,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_poly_get_coeff_si(poly: *const fmpz_poly_struct, n: slong) -> slong;
pub fn fmpz_poly_set_coeff_si(poly: *mut fmpz_poly_struct, n: slong, x: slong);
pub fn fmpz_poly_get_coeff_ui(poly: *const fmpz_poly_struct, n: slong) -> ulong;
pub fn fmpz_poly_set_coeff_ui(poly: *mut fmpz_poly_struct, n: slong, x: ulong);
pub fn fmpz_poly_set_coeff_fmpz(poly: *mut fmpz_poly_struct, n: slong, x: *const fmpz);
pub fn fmpz_poly_get_coeff_fmpz(x: *mut fmpz, poly: *const fmpz_poly_struct, n: slong);
pub fn fmpz_poly_equal(
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
) -> libc::c_int;
pub fn fmpz_poly_equal_trunc(
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
) -> libc::c_int;
pub fn _fmpz_poly_is_one(poly: *const fmpz, len: slong) -> libc::c_int;
#[link_name = "fmpz_poly_is_one__extern"]
pub fn fmpz_poly_is_one(op: *const fmpz_poly_struct) -> libc::c_int;
#[link_name = "fmpz_poly_is_unit__extern"]
pub fn fmpz_poly_is_unit(op: *const fmpz_poly_struct) -> libc::c_int;
#[link_name = "fmpz_poly_is_gen__extern"]
pub fn fmpz_poly_is_gen(op: *const fmpz_poly_struct) -> libc::c_int;
pub fn fmpz_poly_equal_fmpz(poly: *const fmpz_poly_struct, c: *const fmpz) -> libc::c_int;
pub fn _fmpz_poly_add(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_add(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn fmpz_poly_add_series(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_sub(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_sub(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn fmpz_poly_sub_series(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn fmpz_poly_neg(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
pub fn fmpz_poly_add_si(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, c: slong);
pub fn fmpz_poly_sub_si(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, c: slong);
pub fn fmpz_poly_si_sub(res: *mut fmpz_poly_struct, c: slong, poly: *const fmpz_poly_struct);
pub fn fmpz_poly_add_fmpz(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
c: *mut fmpz,
);
pub fn fmpz_poly_sub_fmpz(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
c: *mut fmpz,
);
pub fn fmpz_poly_fmpz_sub(
res: *mut fmpz_poly_struct,
c: *mut fmpz,
poly: *const fmpz_poly_struct,
);
pub fn fmpz_poly_scalar_abs(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
pub fn fmpz_poly_scalar_mul_ui(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: ulong,
);
pub fn fmpz_poly_scalar_mul_si(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: slong,
);
pub fn fmpz_poly_scalar_mul_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_addmul_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_addmul_si(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: slong,
);
pub fn fmpz_poly_scalar_addmul_ui(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: ulong,
);
pub fn fmpz_poly_scalar_submul_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_fdiv_ui(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: ulong,
);
pub fn fmpz_poly_scalar_fdiv_si(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: slong,
);
pub fn fmpz_poly_scalar_fdiv_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_tdiv_ui(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: ulong,
);
pub fn fmpz_poly_scalar_tdiv_si(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: slong,
);
pub fn fmpz_poly_scalar_tdiv_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_divexact_ui(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: ulong,
);
pub fn fmpz_poly_scalar_divexact_si(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: slong,
);
pub fn fmpz_poly_scalar_divexact_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_fdiv_2exp(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
exp: ulong,
);
pub fn fmpz_poly_scalar_tdiv_2exp(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
exp: ulong,
);
pub fn fmpz_poly_scalar_mul_2exp(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
exp: ulong,
);
pub fn fmpz_poly_scalar_mod_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_smod_fmpz(
poly1: *mut fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
x: *const fmpz,
);
pub fn _fmpz_poly_remove_content_2exp(pol: *mut fmpz, len: slong) -> slong;
pub fn _fmpz_poly_scale_2exp(pol: *mut fmpz, len: slong, k: slong);
pub fn _fmpz_poly_bit_pack(
arr: nn_ptr,
poly: *const fmpz,
len: slong,
bit_size: flint_bitcnt_t,
negate: libc::c_int,
);
pub fn fmpz_poly_bit_pack(
f: *mut fmpz,
poly: *const fmpz_poly_struct,
bit_size: flint_bitcnt_t,
);
pub fn _fmpz_poly_bit_unpack(
poly: *mut fmpz,
nlo: slong,
nhi: slong,
arr: nn_srcptr,
bit_size: flint_bitcnt_t,
negate: libc::c_int,
) -> libc::c_int;
pub fn _fmpz_poly_bit_unpack_unsigned(
poly: *mut fmpz,
nlo: slong,
nhi: slong,
arr: nn_srcptr,
bit_size: flint_bitcnt_t,
);
pub fn fmpz_poly_bit_unpack(
poly: *mut fmpz_poly_struct,
f: *const fmpz,
bit_size: flint_bitcnt_t,
);
pub fn fmpz_poly_bit_unpack_unsigned(
poly: *mut fmpz_poly_struct,
f: *const fmpz,
bit_size: flint_bitcnt_t,
);
pub fn _fmpz_poly_mul_classical(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_mul_classical(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_mullow_classical(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_mullow_classical(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_mulhigh_classical(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
start: slong,
);
pub fn fmpz_poly_mulhigh_classical(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
start: slong,
);
pub fn _fmpz_poly_mulmid_classical(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
nlo: slong,
nhi: slong,
);
pub fn fmpz_poly_mulmid_classical(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
nlo: slong,
nhi: slong,
);
pub fn _fmpz_poly_mulmid_SS(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
nlo: slong,
nhi: slong,
);
pub fn fmpz_poly_mulmid_SS(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
nlo: slong,
nhi: slong,
);
pub fn _fmpz_poly_mulmid_KS(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
nlo: slong,
nhi: slong,
);
pub fn fmpz_poly_mulmid_KS(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
nlo: slong,
nhi: slong,
);
pub fn _fmpz_poly_mulmid(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
nlo: slong,
nhi: slong,
);
pub fn fmpz_poly_mulmid(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
nlo: slong,
nhi: slong,
);
pub fn fmpz_poly_mul_karatsuba(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_mul_karatsuba(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn _fmpz_poly_mullow_karatsuba_n(
res: *mut fmpz,
poly1: *const fmpz,
poly2: *const fmpz,
n: slong,
);
pub fn _fmpz_poly_mullow_karatsuba(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_mullow_karatsuba_n(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_mulhigh_karatsuba_n(
res: *mut fmpz,
poly1: *const fmpz,
poly2: *const fmpz,
len: slong,
);
pub fn fmpz_poly_mulhigh_karatsuba_n(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
length: slong,
);
pub fn _fmpz_poly_mul_KS(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_mul_KS(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_mullow_KS(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_mullow_KS(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_mul_SS(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_mul_SS(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_mullow_SS(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_mullow_SS(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_mul(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_mul(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_mullow(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_mullow(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn fmpz_poly_mulhigh_n(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_mulhigh(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
start: slong,
);
pub fn fmpz_poly_mul_SS_precache_init(
pre: *mut fmpz_poly_mul_precache_struct,
len1: slong,
bits1: slong,
poly2: *const fmpz_poly_struct,
);
pub fn fmpz_poly_mul_precache_clear(pre: *mut fmpz_poly_mul_precache_struct);
pub fn _fmpz_poly_mullow_SS_precache(
output: *mut fmpz,
input1: *const fmpz,
len1: slong,
pre: *mut fmpz_poly_mul_precache_struct,
trunc: slong,
);
pub fn fmpz_poly_mullow_SS_precache(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
pre: *mut fmpz_poly_mul_precache_struct,
n: slong,
);
#[link_name = "fmpz_poly_mul_SS_precache__extern"]
pub fn fmpz_poly_mul_SS_precache(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
pre: *mut fmpz_poly_mul_precache_struct,
);
pub fn _fmpz_poly_sqr_KS(rop: *mut fmpz, op: *const fmpz, len: slong);
pub fn fmpz_poly_sqr_KS(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
pub fn fmpz_poly_sqr_karatsuba(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
pub fn _fmpz_poly_sqr_karatsuba(rop: *mut fmpz, op: *const fmpz, len: slong);
pub fn _fmpz_poly_sqr_classical(rop: *mut fmpz, op: *const fmpz, len: slong);
pub fn fmpz_poly_sqr_classical(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
pub fn _fmpz_poly_sqr(rop: *mut fmpz, op: *const fmpz, len: slong);
pub fn fmpz_poly_sqr(rop: *mut fmpz_poly_struct, op: *const fmpz_poly_struct);
pub fn _fmpz_poly_sqrlow_KS(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn fmpz_poly_sqrlow_KS(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, n: slong);
pub fn _fmpz_poly_sqrlow_karatsuba_n(res: *mut fmpz, poly: *const fmpz, n: slong);
pub fn _fmpz_poly_sqrlow_karatsuba(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn fmpz_poly_sqrlow_karatsuba_n(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_sqrlow_classical(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn fmpz_poly_sqrlow_classical(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_sqrlow(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn fmpz_poly_sqrlow(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, n: slong);
pub fn _fmpz_poly_pow_multinomial(res: *mut fmpz, poly: *const fmpz, len: slong, e: ulong);
pub fn fmpz_poly_pow_multinomial(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
e: ulong,
);
pub fn _fmpz_poly_pow_binomial(res: *mut fmpz, poly: *const fmpz, e: ulong);
pub fn fmpz_poly_pow_binomial(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
e: ulong,
);
pub fn _fmpz_poly_pow_binexp(res: *mut fmpz, poly: *const fmpz, len: slong, e: ulong);
pub fn fmpz_poly_pow_binexp(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
e: ulong,
);
pub fn _fmpz_poly_pow_addchains(
res: *mut fmpz,
poly: *const fmpz,
len: slong,
a: *const libc::c_int,
n: libc::c_int,
);
pub fn fmpz_poly_pow_addchains(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
e: ulong,
);
pub fn _fmpz_poly_pow_small(res: *mut fmpz, poly: *const fmpz, len: slong, e: ulong);
pub fn _fmpz_poly_pow(res: *mut fmpz, poly: *const fmpz, len: slong, e: ulong);
pub fn fmpz_poly_pow(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct, e: ulong);
pub fn _fmpz_poly_pow_trunc(res: *mut fmpz, poly: *const fmpz, e: ulong, n: slong);
pub fn fmpz_poly_pow_trunc(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
e: ulong,
n: slong,
);
pub fn _fmpz_poly_shift_left(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn _fmpz_poly_shift_right(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn fmpz_poly_shift_left(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
pub fn fmpz_poly_shift_right(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_2norm(res: *mut fmpz, poly: *const fmpz, len: slong);
pub fn fmpz_poly_2norm(res: *mut fmpz, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_2norm_normalised_bits(poly: *const fmpz, len: slong) -> flint_bitcnt_t;
pub fn fmpz_poly_max_limbs(poly: *const fmpz_poly_struct) -> ulong;
pub fn fmpz_poly_max_bits(poly: *const fmpz_poly_struct) -> slong;
pub fn fmpz_poly_height(res: *mut fmpz, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_hamming_weight(a: *const fmpz, len: slong) -> slong;
pub fn _fmpz_poly_gcd_subresultant(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_gcd_subresultant(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_gcd_heuristic(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
) -> libc::c_int;
pub fn fmpz_poly_gcd_heuristic(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
) -> libc::c_int;
pub fn _fmpz_poly_gcd_modular(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_gcd_modular(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_gcd(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_gcd(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_lcm(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_lcm(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_resultant_euclidean(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_resultant_euclidean(
res: *mut fmpz,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_resultant_modular(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_resultant_modular(
res: *mut fmpz,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_resultant(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_resultant(
res: *mut fmpz,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_resultant_modular_div(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
divisor: *const fmpz,
nbits: slong,
);
pub fn fmpz_poly_resultant_modular_div(
res: *mut fmpz,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
divisor: *const fmpz,
nbits: slong,
);
pub fn _fmpz_poly_xgcd_modular(
r: *mut fmpz,
s: *mut fmpz,
t: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_xgcd_modular(
r: *mut fmpz,
s: *mut fmpz_poly_struct,
t: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
#[link_name = "_fmpz_poly_xgcd__extern"]
pub fn _fmpz_poly_xgcd(
r: *mut fmpz,
s: *mut fmpz,
t: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
#[link_name = "fmpz_poly_xgcd__extern"]
pub fn fmpz_poly_xgcd(
r: *mut fmpz,
s: *mut fmpz_poly_struct,
t: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_discriminant(res: *mut fmpz, poly: *const fmpz, len: slong);
pub fn fmpz_poly_discriminant(res: *mut fmpz, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_content(res: *mut fmpz, poly: *const fmpz, len: slong);
pub fn fmpz_poly_content(res: *mut fmpz, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_primitive_part(res: *mut fmpz, poly: *const fmpz, len: slong);
pub fn fmpz_poly_primitive_part(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_is_squarefree(poly: *const fmpz, len: slong) -> libc::c_int;
pub fn fmpz_poly_is_squarefree(poly: *const fmpz_poly_struct) -> libc::c_int;
pub fn _fmpz_poly_divrem_basecase(
Q: *mut fmpz,
R: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_divrem_basecase(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_divrem_divconquer_recursive(
Q: *mut fmpz,
BQ: *mut fmpz,
W: *mut fmpz,
A: *const fmpz,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn _fmpz_poly_divrem_divconquer(
Q: *mut fmpz,
R: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_divrem_divconquer(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_divrem(
Q: *mut fmpz,
R: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_divrem(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_div_basecase(
Q: *mut fmpz,
R: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_div_basecase(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_divremlow_divconquer_recursive(
Q: *mut fmpz,
QB: *mut fmpz,
A: *const fmpz,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn _fmpz_poly_div_divconquer_recursive(
Q: *mut fmpz,
temp: *mut fmpz,
A: *const fmpz,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn _fmpz_poly_div_divconquer(
Q: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_div_divconquer(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_div(
Q: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_div(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_preinvert(B_inv: *mut fmpz, B: *const fmpz, n: slong);
pub fn fmpz_poly_preinvert(B_inv: *mut fmpz_poly_struct, B: *const fmpz_poly_struct);
pub fn _fmpz_poly_div_preinv(
Q: *mut fmpz,
A: *const fmpz,
len1: slong,
B: *const fmpz,
B_inv: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_div_preinv(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
B_inv: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_divrem_preinv(
Q: *mut fmpz,
A: *mut fmpz,
len1: slong,
B: *const fmpz,
B_inv: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_divrem_preinv(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
B_inv: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_divexact(
Q: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
);
pub fn fmpz_poly_divexact(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_powers_precompute(B: *const fmpz, len: slong) -> *mut *mut fmpz;
pub fn fmpz_poly_powers_precompute(
pinv: *mut fmpz_poly_powers_precomp_struct,
poly: *mut fmpz_poly_struct,
);
pub fn _fmpz_poly_powers_clear(powers: *mut *mut fmpz, len: slong);
pub fn fmpz_poly_powers_clear(pinv: *mut fmpz_poly_powers_precomp_struct);
pub fn _fmpz_poly_rem_powers_precomp(
A: *mut fmpz,
m: slong,
B: *const fmpz,
n: slong,
powers: *mut *mut fmpz,
);
pub fn fmpz_poly_rem_powers_precomp(
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
B_inv: *const fmpz_poly_powers_precomp_struct,
);
pub fn _fmpz_poly_rem_basecase(
Q: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
);
pub fn fmpz_poly_rem_basecase(
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_rem(R: *mut fmpz, A: *const fmpz, lenA: slong, B: *const fmpz, lenB: slong);
pub fn fmpz_poly_rem(
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn fmpz_poly_div_root_fmpz(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
c: *const fmpz,
);
pub fn _fmpz_poly_div_root_fmpz(Q: *mut fmpz, A: *const fmpz, len: slong, c: *const fmpz);
pub fn fmpz_poly_divexact_root_fmpq(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
c: *const fmpq,
);
pub fn _fmpz_poly_divexact_root_fmpq(Q: *mut fmpz, A: *const fmpz, len: slong, x: *const fmpq);
pub fn _fmpz_poly_inv_series_basecase(Qinv: *mut fmpz, Q: *const fmpz, Qlen: slong, n: slong);
pub fn fmpz_poly_inv_series_basecase(
Qinv: *mut fmpz_poly_struct,
Q: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_inv_series_newton(Qinv: *mut fmpz, Q: *const fmpz, Qlen: slong, n: slong);
pub fn fmpz_poly_inv_series_newton(
Qinv: *mut fmpz_poly_struct,
Q: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_inv_series(Qinv: *mut fmpz, Q: *const fmpz, Qlen: slong, n: slong);
pub fn fmpz_poly_inv_series(Qinv: *mut fmpz_poly_struct, Q: *const fmpz_poly_struct, n: slong);
pub fn _fmpz_poly_div_series_basecase(
Q: *mut fmpz,
A: *const fmpz,
Alen: slong,
B: *const fmpz,
Blen: slong,
n: slong,
);
pub fn _fmpz_poly_div_series_divconquer(
Q: *mut fmpz,
A: *const fmpz,
Alen: slong,
B: *const fmpz,
Blen: slong,
n: slong,
);
pub fn _fmpz_poly_div_series(
Q: *mut fmpz,
A: *const fmpz,
Alen: slong,
B: *const fmpz,
Blen: slong,
n: slong,
);
pub fn fmpz_poly_div_series_basecase(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
n: slong,
);
pub fn fmpz_poly_div_series_divconquer(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
n: slong,
);
pub fn fmpz_poly_div_series(
Q: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_divides(
q: *mut fmpz,
a: *const fmpz,
len1: slong,
b: *const fmpz,
len2: slong,
) -> libc::c_int;
pub fn fmpz_poly_divides(
q: *mut fmpz_poly_struct,
a: *const fmpz_poly_struct,
b: *const fmpz_poly_struct,
) -> libc::c_int;
pub fn fmpz_poly_remove(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
) -> slong;
pub fn fmpz_poly_pseudo_divrem_basecase(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
d: *mut ulong,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn fmpz_poly_pseudo_divrem_divconquer(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
d: *mut ulong,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_pseudo_divrem_cohen(
Q: *mut fmpz,
R: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
);
pub fn fmpz_poly_pseudo_divrem_cohen(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_pseudo_rem_cohen(
R: *mut fmpz,
A: *const fmpz,
lenA: slong,
B: *const fmpz,
lenB: slong,
);
pub fn fmpz_poly_pseudo_rem_cohen(
R: *mut fmpz_poly_struct,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
#[link_name = "fmpz_poly_pseudo_divrem__extern"]
pub fn fmpz_poly_pseudo_divrem(
Q: *mut fmpz_poly_struct,
R: *mut fmpz_poly_struct,
d: *mut ulong,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn fmpz_poly_pseudo_div(
Q: *mut fmpz_poly_struct,
d: *mut ulong,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn fmpz_poly_pseudo_rem(
R: *mut fmpz_poly_struct,
d: *mut ulong,
A: *const fmpz_poly_struct,
B: *const fmpz_poly_struct,
);
pub fn fmpz_poly_divlow_smodp(
res: *mut fmpz,
f: *const fmpz_poly_struct,
g: *const fmpz_poly_struct,
p: *const fmpz,
n: slong,
);
pub fn fmpz_poly_divhigh_smodp(
res: *mut fmpz,
f: *const fmpz_poly_struct,
g: *const fmpz_poly_struct,
p: *const fmpz,
n: slong,
);
pub fn _fmpz_poly_derivative(rpoly: *mut fmpz, poly: *const fmpz, len: slong);
pub fn fmpz_poly_derivative(res: *mut fmpz_poly_struct, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_nth_derivative(rpoly: *mut fmpz, poly: *const fmpz, n: ulong, len: slong);
pub fn fmpz_poly_nth_derivative(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: ulong,
);
pub fn _fmpz_poly_evaluate_divconquer_fmpz(
res: *mut fmpz,
poly: *const fmpz,
len: slong,
a: *const fmpz,
);
pub fn fmpz_poly_evaluate_divconquer_fmpz(
res: *mut fmpz,
poly: *const fmpz_poly_struct,
a: *const fmpz,
);
pub fn _fmpz_poly_evaluate_horner_fmpz(
res: *mut fmpz,
f: *const fmpz,
len: slong,
a: *const fmpz,
);
pub fn fmpz_poly_evaluate_horner_fmpz(
res: *mut fmpz,
f: *const fmpz_poly_struct,
a: *const fmpz,
);
pub fn _fmpz_poly_evaluate_fmpz(res: *mut fmpz, f: *const fmpz, len: slong, a: *const fmpz);
pub fn fmpz_poly_evaluate_fmpz(res: *mut fmpz, f: *const fmpz_poly_struct, a: *const fmpz);
pub fn _fmpz_poly_evaluate_horner_fmpq(
rnum: *mut fmpz,
rden: *mut fmpz,
f: *const fmpz,
len: slong,
anum: *const fmpz,
aden: *const fmpz,
);
pub fn fmpz_poly_evaluate_horner_fmpq(
res: *mut fmpq,
f: *const fmpz_poly_struct,
a: *const fmpq,
);
pub fn _fmpz_poly_evaluate_divconquer_fmpq(
rnum: *mut fmpz,
rden: *mut fmpz,
f: *const fmpz,
len: slong,
anum: *const fmpz,
aden: *const fmpz,
);
pub fn fmpz_poly_evaluate_divconquer_fmpq(
res: *mut fmpq,
f: *const fmpz_poly_struct,
a: *const fmpq,
);
pub fn _fmpz_poly_evaluate_fmpq(
rnum: *mut fmpz,
rden: *mut fmpz,
f: *const fmpz,
len: slong,
anum: *const fmpz,
aden: *const fmpz,
);
pub fn fmpz_poly_evaluate_fmpq(res: *mut fmpq, f: *const fmpz_poly_struct, a: *const fmpq);
pub fn _fmpz_poly_evaluate_mod(
poly: *const fmpz,
len: slong,
a: ulong,
n: ulong,
ninv: ulong,
) -> ulong;
pub fn fmpz_poly_evaluate_mod(poly: *const fmpz_poly_struct, a: ulong, n: ulong) -> ulong;
pub fn _fmpz_poly_evaluate_horner_d(poly: *const fmpz, n: slong, d: f64) -> f64;
pub fn fmpz_poly_evaluate_horner_d(poly: *const fmpz_poly_struct, d: f64) -> f64;
pub fn _fmpz_poly_evaluate_horner_d_2exp(
exp: *mut slong,
poly: *const fmpz,
n: slong,
d: f64,
) -> f64;
pub fn fmpz_poly_evaluate_horner_d_2exp(
exp: *mut slong,
poly: *const fmpz_poly_struct,
d: f64,
) -> f64;
pub fn _fmpz_poly_evaluate_horner_d_2exp2(
exp: *mut slong,
poly: *const fmpz,
n: slong,
d: f64,
dexp: slong,
) -> f64;
pub fn fmpz_poly_evaluate_horner_d_2exp2(
exp: *mut slong,
poly: *const fmpz_poly_struct,
d: f64,
dexp: slong,
) -> f64;
pub fn _fmpz_poly_compose_horner(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_compose_horner(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_compose_divconquer(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_compose_divconquer(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_compose(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
);
pub fn fmpz_poly_compose(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
);
pub fn _fmpz_poly_taylor_shift_horner(poly: *mut fmpz, c: *const fmpz, n: slong);
pub fn fmpz_poly_taylor_shift_horner(
g: *mut fmpz_poly_struct,
f: *const fmpz_poly_struct,
c: *const fmpz,
);
pub fn _fmpz_poly_taylor_shift_divconquer(poly: *mut fmpz, c: *const fmpz, n: slong);
pub fn fmpz_poly_taylor_shift_divconquer(
g: *mut fmpz_poly_struct,
f: *const fmpz_poly_struct,
c: *const fmpz,
);
pub fn _fmpz_poly_taylor_shift_multi_mod(poly: *mut fmpz, c: *const fmpz, n: slong);
#[link_name = "fmpz_poly_taylor_shift_multi_mod__extern"]
pub fn fmpz_poly_taylor_shift_multi_mod(
g: *mut fmpz_poly_struct,
f: *const fmpz_poly_struct,
c: *const fmpz,
);
pub fn _fmpz_poly_taylor_shift(poly: *mut fmpz, c: *const fmpz, n: slong);
pub fn fmpz_poly_taylor_shift(
g: *mut fmpz_poly_struct,
f: *const fmpz_poly_struct,
c: *const fmpz,
);
pub fn _fmpz_poly_compose_series_brent_kung(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_compose_series_brent_kung(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_compose_series_horner(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_compose_series_horner(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_compose_series(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
poly2: *const fmpz,
len2: slong,
n: slong,
);
pub fn fmpz_poly_compose_series(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
poly2: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_revert_series(Qinv: *mut fmpz, Q: *const fmpz, Qlen: slong, n: slong);
pub fn fmpz_poly_revert_series(
Qinv: *mut fmpz_poly_struct,
Q: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_sqrtrem_classical(
res: *mut fmpz,
r: *mut fmpz,
poly: *const fmpz,
len: slong,
) -> libc::c_int;
pub fn fmpz_poly_sqrtrem_classical(
b: *mut fmpz_poly_struct,
r: *mut fmpz_poly_struct,
a: *const fmpz_poly_struct,
) -> libc::c_int;
pub fn _fmpz_poly_sqrtrem_divconquer(
res: *mut fmpz,
r: *mut fmpz,
poly: *const fmpz,
len: slong,
temp: *mut fmpz,
) -> libc::c_int;
pub fn fmpz_poly_sqrtrem_divconquer(
b: *mut fmpz_poly_struct,
r: *mut fmpz_poly_struct,
a: *const fmpz_poly_struct,
) -> libc::c_int;
pub fn _fmpz_poly_sqrt_classical(
res: *mut fmpz,
poly: *const fmpz,
len: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_sqrt_classical(
b: *mut fmpz_poly_struct,
a: *const fmpz_poly_struct,
) -> libc::c_int;
pub fn _fmpz_poly_sqrt_divconquer(
res: *mut fmpz,
poly: *const fmpz,
len: slong,
exact: libc::c_int,
) -> libc::c_int;
pub fn fmpz_poly_sqrt_divconquer(
b: *mut fmpz_poly_struct,
a: *const fmpz_poly_struct,
) -> libc::c_int;
pub fn _fmpz_poly_sqrt_KS(rop: *mut fmpz, op: *const fmpz, len: slong) -> libc::c_int;
pub fn fmpz_poly_sqrt_KS(b: *mut fmpz_poly_struct, a: *const fmpz_poly_struct) -> libc::c_int;
pub fn _fmpz_poly_sqrt(res: *mut fmpz, poly: *const fmpz, len: slong) -> libc::c_int;
pub fn fmpz_poly_sqrt(b: *mut fmpz_poly_struct, a: *const fmpz_poly_struct) -> libc::c_int;
pub fn _fmpz_poly_sqrt_series(
res: *mut fmpz,
poly: *const fmpz,
len: slong,
n: slong,
) -> libc::c_int;
pub fn fmpz_poly_sqrt_series(
b: *mut fmpz_poly_struct,
a: *const fmpz_poly_struct,
n: slong,
) -> libc::c_int;
pub fn _fmpz_poly_power_sums_naive(res: *mut fmpz, poly: *const fmpz, len: slong, n: slong);
pub fn fmpz_poly_power_sums_naive(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
pub fn fmpz_poly_power_sums(
res: *mut fmpz_poly_struct,
poly: *const fmpz_poly_struct,
n: slong,
);
pub fn _fmpz_poly_power_sums_to_poly(res: *mut fmpz, poly: *const fmpz, len: slong);
pub fn fmpz_poly_power_sums_to_poly(res: *mut fmpz_poly_struct, Q: *const fmpz_poly_struct);
pub fn _fmpz_poly_signature(r1: *mut slong, r2: *mut slong, poly: *const fmpz, len: slong);
pub fn fmpz_poly_signature(r1: *mut slong, r2: *mut slong, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_fprint(file: *mut FILE, poly: *const fmpz, len: slong) -> libc::c_int;
pub fn fmpz_poly_fprint(file: *mut FILE, poly: *const fmpz_poly_struct) -> libc::c_int;
pub fn _fmpz_poly_fprint_pretty(
file: *mut FILE,
poly: *const fmpz,
len: slong,
x: *const libc::c_char,
) -> libc::c_int;
pub fn fmpz_poly_fprint_pretty(
file: *mut FILE,
poly: *const fmpz_poly_struct,
x: *const libc::c_char,
) -> libc::c_int;
pub fn fmpz_poly_fread(file: *mut FILE, poly: *mut fmpz_poly_struct) -> libc::c_int;
pub fn fmpz_poly_fread_pretty(
file: *mut FILE,
poly: *mut fmpz_poly_struct,
x: *mut *mut libc::c_char,
) -> libc::c_int;
pub fn _fmpz_poly_print_pretty(
poly: *const fmpz,
len: slong,
x: *const libc::c_char,
) -> libc::c_int;
pub fn fmpz_poly_print_pretty(
poly: *const fmpz_poly_struct,
x: *const libc::c_char,
) -> libc::c_int;
pub fn _fmpz_poly_print(poly: *const fmpz, n: slong) -> libc::c_int;
pub fn fmpz_poly_print(poly: *const fmpz_poly_struct) -> libc::c_int;
pub fn fmpz_poly_read(poly: *mut fmpz_poly_struct) -> libc::c_int;
pub fn fmpz_poly_read_pretty(
poly: *mut fmpz_poly_struct,
x: *mut *mut libc::c_char,
) -> libc::c_int;
pub fn fmpz_poly_debug(poly: *const fmpz_poly_struct);
pub fn fmpz_poly_get_nmod_poly(res: *mut nmod_poly_struct, poly: *const fmpz_poly_struct);
pub fn fmpz_poly_set_nmod_poly(res: *mut fmpz_poly_struct, poly: *const nmod_poly_struct);
pub fn fmpz_poly_set_nmod_poly_unsigned(
res: *mut fmpz_poly_struct,
poly: *const nmod_poly_struct,
);
pub fn _fmpz_poly_CRT_ui_precomp(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
m1: *const fmpz,
poly2: nn_srcptr,
len2: slong,
m2: ulong,
m2inv: ulong,
m1m2: *mut fmpz,
c: ulong,
sign: libc::c_int,
);
pub fn _fmpz_poly_CRT_ui(
res: *mut fmpz,
poly1: *const fmpz,
len1: slong,
m1: *const fmpz,
poly2: nn_srcptr,
len2: slong,
m2: ulong,
m2inv: ulong,
sign: libc::c_int,
);
pub fn fmpz_poly_CRT_ui(
res: *mut fmpz_poly_struct,
poly1: *const fmpz_poly_struct,
m1: *const fmpz,
poly2: *const nmod_poly_struct,
sign: libc::c_int,
);
pub fn _fmpz_poly_product_roots_fmpz_vec(poly: *mut fmpz, xs: *const fmpz, n: slong);
pub fn fmpz_poly_product_roots_fmpz_vec(poly: *mut fmpz_poly_struct, xs: *const fmpz, n: slong);
pub fn _fmpz_poly_product_roots_fmpq_vec(poly: *mut fmpz, xs: *const fmpq, n: slong);
pub fn fmpz_poly_product_roots_fmpq_vec(poly: *mut fmpz_poly_struct, xs: *const fmpq, n: slong);
pub fn _fmpz_poly_tree_alloc(len: slong) -> *mut *mut fmpz;
pub fn _fmpz_poly_tree_free(tree: *mut *mut fmpz, len: slong);
pub fn _fmpz_poly_tree_build_fmpq_vec(tree: *mut *mut fmpz, roots: *const fmpq, len: slong);
pub fn _fmpz_poly_monomial_to_newton(poly: *mut fmpz, roots: *const fmpz, n: slong);
pub fn _fmpz_poly_newton_to_monomial(poly: *mut fmpz, roots: *const fmpz, n: slong);
pub fn fmpz_poly_evaluate_fmpz_vec(
res: *mut fmpz,
f: *const fmpz_poly_struct,
a: *const fmpz,
n: slong,
);
pub fn fmpz_poly_interpolate_fmpz_vec(
poly: *mut fmpz_poly_struct,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
);
pub fn _fmpz_poly_interpolate_newton(
poly: *mut fmpz,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
) -> libc::c_int;
pub fn fmpz_poly_interpolate_newton(
poly: *mut fmpz_poly_struct,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
) -> libc::c_int;
pub fn _fmpz_poly_interpolate_multi_mod(
poly: *mut fmpz,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
) -> libc::c_int;
pub fn fmpz_poly_interpolate_multi_mod(
poly: *mut fmpz_poly_struct,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
) -> libc::c_int;
pub fn _fmpz_poly_interpolate(
poly: *mut fmpz,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
) -> libc::c_int;
pub fn fmpz_poly_interpolate(
poly: *mut fmpz_poly_struct,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
) -> libc::c_int;
pub fn _fmpz_poly_interpolate_exact_newton(
poly: *mut fmpz,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
);
pub fn fmpz_poly_interpolate_exact_newton(
poly: *mut fmpz_poly_struct,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
);
pub fn _fmpz_poly_interpolate_exact(
poly: *mut fmpz,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
);
pub fn fmpz_poly_interpolate_exact(
poly: *mut fmpz_poly_struct,
xs: *const fmpz,
ys: *const fmpz,
n: slong,
);
pub fn fmpz_poly_hensel_build_tree(
link: *mut slong,
v: *mut fmpz_poly_t,
w: *mut fmpz_poly_t,
fac: *const nmod_poly_factor_struct,
);
pub fn fmpz_poly_hensel_lift(
Gout: *mut fmpz_poly_struct,
Hout: *mut fmpz_poly_struct,
Aout: *mut fmpz_poly_struct,
Bout: *mut fmpz_poly_struct,
f: *const fmpz_poly_struct,
g: *const fmpz_poly_struct,
h: *const fmpz_poly_struct,
a: *const fmpz_poly_struct,
b: *const fmpz_poly_struct,
p: *const fmpz,
p1: *const fmpz,
);
pub fn _fmpz_poly_hensel_lift_without_inverse(
G: *mut fmpz,
H: *mut fmpz,
f: *const fmpz,
lenF: slong,
g: *const fmpz,
lenG: slong,
h: *const fmpz,
lenH: slong,
a: *const fmpz,
lenA: slong,
b: *const fmpz,
lenB: slong,
p: *const fmpz,
p1: *const fmpz,
);
pub fn fmpz_poly_hensel_lift_without_inverse(
Gout: *mut fmpz_poly_struct,
Hout: *mut fmpz_poly_struct,
f: *const fmpz_poly_struct,
g: *const fmpz_poly_struct,
h: *const fmpz_poly_struct,
a: *const fmpz_poly_struct,
b: *const fmpz_poly_struct,
p: *const fmpz,
p1: *const fmpz,
);
pub fn _fmpz_poly_hensel_lift_only_inverse(
A: *mut fmpz,
B: *mut fmpz,
G: *const fmpz,
lenG: slong,
H: *const fmpz,
lenH: slong,
a: *const fmpz,
lenA: slong,
b: *const fmpz,
lenB: slong,
p: *const fmpz,
p1: *const fmpz,
);
pub fn fmpz_poly_hensel_lift_only_inverse(
Aout: *mut fmpz_poly_struct,
Bout: *mut fmpz_poly_struct,
G: *const fmpz_poly_struct,
H: *const fmpz_poly_struct,
a: *const fmpz_poly_struct,
b: *const fmpz_poly_struct,
p: *const fmpz,
p1: *const fmpz,
);
pub fn fmpz_poly_hensel_lift_tree_recursive(
link: *mut slong,
v: *mut fmpz_poly_t,
w: *mut fmpz_poly_t,
f: *mut fmpz_poly_struct,
j: slong,
inv: slong,
p0: *const fmpz,
p1: *const fmpz,
);
pub fn fmpz_poly_hensel_lift_tree(
link: *mut slong,
v: *mut fmpz_poly_t,
w: *mut fmpz_poly_t,
f: *mut fmpz_poly_struct,
r: slong,
p: *const fmpz,
e0: slong,
e1: slong,
inv: slong,
);
pub fn _fmpz_poly_hensel_start_lift(
lifted_fac: *mut fmpz_poly_factor_struct,
link: *mut slong,
v: *mut fmpz_poly_t,
w: *mut fmpz_poly_t,
f: *const fmpz_poly_struct,
local_fac: *const nmod_poly_factor_struct,
target_exp: slong,
) -> slong;
pub fn _fmpz_poly_hensel_continue_lift(
lifted_fac: *mut fmpz_poly_factor_struct,
link: *mut slong,
v: *mut fmpz_poly_t,
w: *mut fmpz_poly_t,
f: *const fmpz_poly_struct,
prev: slong,
curr: slong,
N: slong,
p: *const fmpz,
) -> slong;
pub fn fmpz_poly_hensel_lift_once(
lifted_fac: *mut fmpz_poly_factor_struct,
f: *const fmpz_poly_struct,
local_fac: *const nmod_poly_factor_struct,
N: slong,
);
pub fn _fmpz_poly_bound_roots(bound: *mut fmpz, poly: *const fmpz, len: slong);
pub fn fmpz_poly_bound_roots(bound: *mut fmpz, poly: *const fmpz_poly_struct);
pub fn _fmpz_poly_num_real_roots_sturm(
n_neg: *mut slong,
n_pos: *mut slong,
pol: *const fmpz,
len: slong,
);
pub fn fmpz_poly_num_real_roots_sturm(poly: *const fmpz_poly_struct) -> slong;
pub fn _fmpz_poly_num_real_roots(pol: *const fmpz, len: slong) -> slong;
pub fn fmpz_poly_num_real_roots(poly: *const fmpz_poly_struct) -> slong;
pub fn fmpz_poly_CLD_bound(res: *mut fmpz, f: *const fmpz_poly_struct, n: slong);
pub fn _fmpz_poly_cyclotomic(
a: *mut fmpz,
n: ulong,
factors: nn_ptr,
num_factors: slong,
phi: ulong,
);
pub fn fmpz_poly_cyclotomic(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_is_cyclotomic(poly: *const fmpz, len: slong) -> ulong;
pub fn fmpz_poly_is_cyclotomic(poly: *const fmpz_poly_struct) -> ulong;
pub fn _fmpz_poly_cos_minpoly(f: *mut fmpz, n: ulong);
pub fn fmpz_poly_cos_minpoly(f: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_swinnerton_dyer(T: *mut fmpz, n: ulong);
pub fn fmpz_poly_swinnerton_dyer(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_chebyshev_t(coeffs: *mut fmpz, n: ulong);
pub fn fmpz_poly_chebyshev_t(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_chebyshev_u(coeffs: *mut fmpz, n: ulong);
pub fn fmpz_poly_chebyshev_u(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_legendre_pt(coeffs: *mut fmpz, n: ulong);
pub fn fmpz_poly_legendre_pt(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_hermite_h(coeffs: *mut fmpz, n: ulong);
pub fn fmpz_poly_hermite_h(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_hermite_he(coeffs: *mut fmpz, n: ulong);
pub fn fmpz_poly_hermite_he(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_fibonacci(coeffs: *mut fmpz, n: ulong);
pub fn fmpz_poly_fibonacci(poly: *mut fmpz_poly_struct, n: ulong);
pub fn _fmpz_poly_eta_qexp(f: *mut fmpz, e: slong, n: slong);
pub fn fmpz_poly_eta_qexp(f: *mut fmpz_poly_struct, e: slong, n: slong);
pub fn _fmpz_poly_theta_qexp(f: *mut fmpz, e: slong, n: slong);
pub fn fmpz_poly_theta_qexp(f: *mut fmpz_poly_struct, e: slong, n: slong);
pub fn fmpz_poly_eulerian_polynomial(poly: *mut fmpz_poly_struct, n: ulong);
}