use crate::deps::*;
use crate::flint::*;
use crate::gr_types::*;
pub const MPN_MOD_MIN_LIMBS: u32 = 2;
pub const MPN_MOD_MAX_LIMBS: u32 = 16;
#[repr(C)]
pub struct _mpn_mod_ctx_struct {
pub nlimbs: slong,
pub d: [ulong; 16usize],
pub dinv: [ulong; 16usize],
pub dnormed: [ulong; 16usize],
pub norm: flint_bitcnt_t,
pub is_prime: truth_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of _mpn_mod_ctx_struct"][::std::mem::size_of::<_mpn_mod_ctx_struct>() - 408usize];
["Alignment of _mpn_mod_ctx_struct"][::std::mem::align_of::<_mpn_mod_ctx_struct>() - 8usize];
["Offset of field: _mpn_mod_ctx_struct::nlimbs"]
[::std::mem::offset_of!(_mpn_mod_ctx_struct, nlimbs) - 0usize];
["Offset of field: _mpn_mod_ctx_struct::d"]
[::std::mem::offset_of!(_mpn_mod_ctx_struct, d) - 8usize];
["Offset of field: _mpn_mod_ctx_struct::dinv"]
[::std::mem::offset_of!(_mpn_mod_ctx_struct, dinv) - 136usize];
["Offset of field: _mpn_mod_ctx_struct::dnormed"]
[::std::mem::offset_of!(_mpn_mod_ctx_struct, dnormed) - 264usize];
["Offset of field: _mpn_mod_ctx_struct::norm"]
[::std::mem::offset_of!(_mpn_mod_ctx_struct, norm) - 392usize];
["Offset of field: _mpn_mod_ctx_struct::is_prime"]
[::std::mem::offset_of!(_mpn_mod_ctx_struct, is_prime) - 400usize];
};
impl Default for _mpn_mod_ctx_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()
}
}
}
extern "C" {
#[link_name = "mpn_mod_ctx_set_is_field__extern"]
pub fn mpn_mod_ctx_set_is_field(ctx: *mut gr_ctx_struct, is_field: truth_t) -> libc::c_int;
pub fn gr_ctx_init_mpn_mod(ctx: *mut gr_ctx_struct, n: *const fmpz) -> libc::c_int;
pub fn _gr_ctx_init_mpn_mod(
ctx: *mut gr_ctx_struct,
n: nn_srcptr,
nlimbs: slong,
) -> libc::c_int;
pub fn gr_ctx_init_mpn_mod_randtest(ctx: *mut gr_ctx_struct, state: *mut flint_rand_struct);
pub fn mpn_mod_ctx_write(out: *mut gr_stream_struct, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_ctx_clear(ctx: *mut gr_ctx_struct);
#[link_name = "mpn_mod_ctx_is_field__extern"]
pub fn mpn_mod_ctx_is_field(ctx: *mut gr_ctx_struct) -> truth_t;
#[link_name = "mpn_mod_init__extern"]
pub fn mpn_mod_init(x: nn_ptr, ctx: *mut gr_ctx_struct);
#[link_name = "mpn_mod_clear__extern"]
pub fn mpn_mod_clear(UNUSED_x: nn_ptr, UNUSED_ctx: *mut gr_ctx_struct);
#[link_name = "mpn_mod_swap__extern"]
pub fn mpn_mod_swap(x: nn_ptr, y: nn_ptr, ctx: *mut gr_ctx_struct);
#[link_name = "mpn_mod_set__extern"]
pub fn mpn_mod_set(res: nn_ptr, x: nn_srcptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
#[link_name = "mpn_mod_zero__extern"]
pub fn mpn_mod_zero(res: nn_ptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
#[link_name = "mpn_mod_one__extern"]
pub fn mpn_mod_one(res: nn_ptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_set_ui(res: nn_ptr, x: ulong, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_set_si(res: nn_ptr, x: slong, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_neg_one(res: nn_ptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_set_mpn(
res: nn_ptr,
x: nn_srcptr,
xn: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_set_fmpz(res: nn_ptr, x: *const fmpz, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_set_other(
res: nn_ptr,
v: gr_ptr,
v_ctx: *mut gr_ctx_struct,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_randtest(
res: nn_ptr,
state: *mut flint_rand_struct,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_write(
out: *mut gr_stream_struct,
x: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_get_fmpz(res: *mut fmpz, x: nn_srcptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
#[link_name = "mpn_mod_is_zero__extern"]
pub fn mpn_mod_is_zero(x: nn_srcptr, ctx: *mut gr_ctx_struct) -> truth_t;
#[link_name = "mpn_mod_is_one__extern"]
pub fn mpn_mod_is_one(x: nn_srcptr, ctx: *mut gr_ctx_struct) -> truth_t;
pub fn mpn_mod_is_neg_one(x: gr_srcptr, ctx: *mut gr_ctx_struct) -> truth_t;
#[link_name = "mpn_mod_equal__extern"]
pub fn mpn_mod_equal(x: nn_srcptr, y: nn_srcptr, ctx: *mut gr_ctx_struct) -> truth_t;
pub fn mpn_mod_neg(res: nn_ptr, x: nn_srcptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_add(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_sub(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_add_ui(
res: nn_ptr,
x: nn_srcptr,
y: ulong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_sub_ui(
res: nn_ptr,
x: nn_srcptr,
y: ulong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_add_si(
res: nn_ptr,
x: nn_srcptr,
y: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_sub_si(
res: nn_ptr,
x: nn_srcptr,
y: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_add_fmpz(
res: nn_ptr,
x: nn_srcptr,
y: *const fmpz,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_sub_fmpz(
res: nn_ptr,
x: nn_srcptr,
y: *const fmpz,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mul(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mul_ui(
res: nn_ptr,
x: nn_srcptr,
y: ulong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mul_si(
res: nn_ptr,
x: nn_srcptr,
y: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mul_fmpz(
res: nn_ptr,
x: nn_srcptr,
y: *const fmpz,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_addmul(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_addmul_ui(
res: nn_ptr,
x: nn_srcptr,
y: ulong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_addmul_si(
res: nn_ptr,
x: nn_srcptr,
y: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_addmul_fmpz(
res: nn_ptr,
x: nn_srcptr,
y: *const fmpz,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_submul(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_submul_ui(
res: nn_ptr,
x: nn_srcptr,
y: ulong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_submul_si(
res: nn_ptr,
x: nn_srcptr,
y: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_submul_fmpz(
res: nn_ptr,
x: nn_srcptr,
y: *const fmpz,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
#[link_name = "mpn_mod_sqr__extern"]
pub fn mpn_mod_sqr(res: nn_ptr, x: nn_srcptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_fmma(
res: nn_ptr,
x1: nn_srcptr,
y1: nn_srcptr,
x2: nn_srcptr,
y2: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_inv(res: nn_ptr, x: nn_srcptr, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn mpn_mod_div(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_zero(res: nn_ptr, len: slong, ctx: *mut gr_ctx_struct) -> libc::c_int;
pub fn _mpn_mod_vec_clear(
UNUSED_res: nn_ptr,
UNUSED_len: slong,
UNUSED_ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_set(
res: nn_ptr,
x: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_swap(vec1: nn_ptr, vec2: nn_ptr, len: slong, ctx: *mut gr_ctx_struct);
pub fn _mpn_mod_vec_neg(
res: nn_ptr,
x: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_add(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_sub(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_mul(
res: nn_ptr,
x: nn_srcptr,
y: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_mul_scalar(
res: nn_ptr,
x: nn_srcptr,
len: slong,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_scalar_mul_vec(
res: nn_ptr,
y: nn_srcptr,
x: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_addmul_scalar(
res: nn_ptr,
x: nn_srcptr,
len: slong,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_submul_scalar(
res: nn_ptr,
x: nn_srcptr,
len: slong,
y: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_dot(
res: nn_ptr,
initial: nn_srcptr,
subtract: libc::c_int,
vec1: nn_srcptr,
vec2: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_vec_dot_rev(
res: nn_ptr,
initial: nn_srcptr,
subtract: libc::c_int,
vec1: nn_srcptr,
vec2: nn_srcptr,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_mul_waksman(
C: *mut gr_mat_struct,
A: *const gr_mat_struct,
B: *const gr_mat_struct,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_mul_multi_mod(
C: *mut gr_mat_struct,
A: *const gr_mat_struct,
B: *const gr_mat_struct,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_mul(
C: *mut gr_mat_struct,
A: *const gr_mat_struct,
B: *const gr_mat_struct,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_nonsingular_solve_tril(
X: *mut gr_mat_struct,
L: *const gr_mat_struct,
B: *const gr_mat_struct,
unit: libc::c_int,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_nonsingular_solve_triu(
X: *mut gr_mat_struct,
U: *const gr_mat_struct,
B: *const gr_mat_struct,
unit: libc::c_int,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_lu_classical_delayed(
res_rank: *mut slong,
P: *mut slong,
A: *mut gr_mat_struct,
A_in: *const gr_mat_struct,
rank_check: libc::c_int,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_lu(
rank: *mut slong,
P: *mut slong,
LU: *mut gr_mat_struct,
A: *const gr_mat_struct,
rank_check: libc::c_int,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_det(
res: nn_ptr,
A: *const gr_mat_struct,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_mat_charpoly(
res: nn_ptr,
mat: *const gr_mat_struct,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn mpn_mod_mat_reduce_row(
column: *mut slong,
A: *mut gr_mat_struct,
P: *mut slong,
L: *mut slong,
m: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mulmid_classical(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mulmid_karatsuba(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
cutoff: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mulmid_KS(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mulmid_fft_small(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mulmid(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
nlo: slong,
nhi: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mullow_classical(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mullow_karatsuba(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
len: slong,
cutoff: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mullow_KS(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mullow_fft_small(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_mullow(
res: nn_ptr,
poly1: nn_srcptr,
len1: slong,
poly2: nn_srcptr,
len2: slong,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_inv_series(
Q: nn_ptr,
B: nn_srcptr,
lenB: slong,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_div_series(
Q: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
len: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_divrem_q1_preinv1_fmma(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
invL: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_divrem_q1_preinv1_fmma_precond(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
invL: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_divrem_q1_preinv1_karatsuba_precond(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
invL: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_divrem_q1_preinv1(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
invL: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_divrem_basecase_preinv1(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
invL: nn_srcptr,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_divrem_basecase(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_divrem(
Q: nn_ptr,
R: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_div(
Q: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_gcd(
G: nn_ptr,
lenG: *mut slong,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
pub fn _mpn_mod_poly_xgcd(
lenG: *mut slong,
G: nn_ptr,
S: nn_ptr,
T: nn_ptr,
A: nn_srcptr,
lenA: slong,
B: nn_srcptr,
lenB: slong,
ctx: *mut gr_ctx_struct,
) -> libc::c_int;
}