use crate::deps::*;
use crate::flint::*;
use crate::fmpz_mod_types::*;
use crate::fmpz_types::*;
use crate::limb_types::*;
pub const SQUARING_SPACE: u32 = 70;
#[repr(C)]
pub struct _aprcl_config {
pub R: ulong,
pub s: fmpz_t,
pub rs: n_factor_t,
pub qs: fmpz_factor_t,
pub qs_used: *mut libc::c_int,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of _aprcl_config"][::std::mem::size_of::<_aprcl_config>() - 248usize];
["Alignment of _aprcl_config"][::std::mem::align_of::<_aprcl_config>() - 8usize];
["Offset of field: _aprcl_config::R"][::std::mem::offset_of!(_aprcl_config, R) - 0usize];
["Offset of field: _aprcl_config::s"][::std::mem::offset_of!(_aprcl_config, s) - 8usize];
["Offset of field: _aprcl_config::rs"][::std::mem::offset_of!(_aprcl_config, rs) - 16usize];
["Offset of field: _aprcl_config::qs"][::std::mem::offset_of!(_aprcl_config, qs) - 200usize];
["Offset of field: _aprcl_config::qs_used"]
[::std::mem::offset_of!(_aprcl_config, qs_used) - 240usize];
};
impl Default for _aprcl_config {
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 aprcl_config = [_aprcl_config; 1usize];
#[repr(C)]
pub struct _unity_zpq {
pub polys: *mut fmpz_mod_poly_t,
pub p: ulong,
pub q: ulong,
pub ctx: fmpz_mod_ctx_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of _unity_zpq"][::std::mem::size_of::<_unity_zpq>() - 136usize];
["Alignment of _unity_zpq"][::std::mem::align_of::<_unity_zpq>() - 8usize];
["Offset of field: _unity_zpq::polys"][::std::mem::offset_of!(_unity_zpq, polys) - 0usize];
["Offset of field: _unity_zpq::p"][::std::mem::offset_of!(_unity_zpq, p) - 8usize];
["Offset of field: _unity_zpq::q"][::std::mem::offset_of!(_unity_zpq, q) - 16usize];
["Offset of field: _unity_zpq::ctx"][::std::mem::offset_of!(_unity_zpq, ctx) - 24usize];
};
impl Default for _unity_zpq {
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 unity_zpq = [_unity_zpq; 1usize];
#[repr(C)]
pub struct _unity_zp {
pub poly: fmpz_mod_poly_t,
pub p: ulong,
pub exp: ulong,
pub ctx: fmpz_mod_ctx_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of _unity_zp"][::std::mem::size_of::<_unity_zp>() - 152usize];
["Alignment of _unity_zp"][::std::mem::align_of::<_unity_zp>() - 8usize];
["Offset of field: _unity_zp::poly"][::std::mem::offset_of!(_unity_zp, poly) - 0usize];
["Offset of field: _unity_zp::p"][::std::mem::offset_of!(_unity_zp, p) - 24usize];
["Offset of field: _unity_zp::exp"][::std::mem::offset_of!(_unity_zp, exp) - 32usize];
["Offset of field: _unity_zp::ctx"][::std::mem::offset_of!(_unity_zp, ctx) - 40usize];
};
impl Default for _unity_zp {
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 unity_zp = [_unity_zp; 1usize];
pub const primality_test_status_UNKNOWN: primality_test_status = 0;
pub const primality_test_status_PRIME: primality_test_status = 1;
pub const primality_test_status_COMPOSITE: primality_test_status = 2;
pub const primality_test_status_PROBABPRIME: primality_test_status = 3;
pub type primality_test_status = libc::c_uint;
extern "C" {
pub fn _aprcl_p_ind(conf: *const _aprcl_config, p: ulong) -> libc::c_int;
pub fn aprcl_p_power_in_q(q: ulong, p: ulong) -> ulong;
pub fn aprcl_is_mul_coprime_ui_ui(x: ulong, y: ulong, n: *const fmpz) -> libc::c_int;
pub fn aprcl_is_mul_coprime_ui_fmpz(x: ulong, y: *const fmpz, n: *const fmpz) -> libc::c_int;
pub fn aprcl_is_prime(n: *const fmpz) -> libc::c_int;
pub fn aprcl_config_gauss_init(conf: *mut _aprcl_config, n: *const fmpz);
pub fn aprcl_config_gauss_init_min_R(conf: *mut _aprcl_config, n: *const fmpz, R: ulong);
pub fn aprcl_config_gauss_clear(conf: *mut _aprcl_config);
pub fn aprcl_R_value(n: *const fmpz) -> ulong;
pub fn aprcl_config_jacobi_init(conf: *mut _aprcl_config, n: *const fmpz);
pub fn aprcl_config_jacobi_clear(conf: *mut _aprcl_config);
pub fn aprcl_is_prime_gauss(n: *const fmpz) -> libc::c_int;
pub fn aprcl_is_prime_gauss_min_R(n: *const fmpz, R: ulong) -> libc::c_int;
pub fn _aprcl_is_prime_gauss(
n: *const fmpz,
config: *const _aprcl_config,
) -> primality_test_status;
pub fn _aprcl_is_gausspower_2q_equal_first(q: ulong, n: *const fmpz) -> libc::c_int;
pub fn _aprcl_is_gausspower_2q_equal_second(q: ulong, n: *const fmpz) -> libc::c_int;
pub fn _aprcl_is_gausspower_from_unity_p(q: ulong, r: ulong, n: *const fmpz) -> slong;
pub fn aprcl_is_prime_jacobi(n: *const fmpz) -> libc::c_int;
pub fn _aprcl_is_prime_jacobi(
n: *const fmpz,
config: *const _aprcl_config,
) -> primality_test_status;
pub fn _aprcl_is_prime_jacobi_check_pk(j: *const _unity_zp, u: *const fmpz, v: ulong) -> slong;
pub fn _aprcl_is_prime_jacobi_check_21(q: ulong, n: *const fmpz) -> slong;
pub fn _aprcl_is_prime_jacobi_check_22(
j: *const _unity_zp,
u: *const fmpz,
v: ulong,
q: ulong,
) -> slong;
pub fn _aprcl_is_prime_jacobi_check_2k(
j: *const _unity_zp,
j2_1: *const _unity_zp,
j2_2: *const _unity_zp,
u: *const fmpz,
v: ulong,
) -> slong;
pub fn _aprcl_is_prime_jacobi_additional_test(n: *const fmpz, p: ulong) -> libc::c_int;
pub fn aprcl_is_prime_final_division(n: *const fmpz, s: *const fmpz, r: ulong) -> libc::c_int;
pub fn unity_zp_init(f: *mut _unity_zp, p: ulong, exp: ulong, n: *const fmpz);
pub fn unity_zp_clear(f: *mut _unity_zp);
pub fn unity_zp_copy(f: *mut _unity_zp, g: *const _unity_zp);
pub fn unity_zp_swap(f: *mut _unity_zp, g: *mut _unity_zp);
pub fn unity_zp_set_zero(f: *mut _unity_zp);
pub fn unity_zp_is_unity(f: *mut _unity_zp) -> slong;
pub fn unity_zp_equal(f: *mut _unity_zp, g: *mut _unity_zp) -> libc::c_int;
pub fn unity_zp_coeff_set_fmpz(f: *mut _unity_zp, ind: ulong, x: *const fmpz);
pub fn unity_zp_coeff_set_ui(f: *mut _unity_zp, ind: ulong, x: ulong);
pub fn unity_zp_coeff_add_fmpz(f: *mut _unity_zp, ind: ulong, x: *const fmpz);
pub fn unity_zp_coeff_add_ui(f: *mut _unity_zp, ind: ulong, x: ulong);
pub fn unity_zp_coeff_inc(f: *mut _unity_zp, ind: ulong);
pub fn unity_zp_coeff_dec(f: *mut _unity_zp, ind: ulong);
pub fn unity_zp_mul_scalar_ui(f: *mut _unity_zp, g: *const _unity_zp, s: ulong);
pub fn unity_zp_add(f: *mut _unity_zp, g: *const _unity_zp, h: *const _unity_zp);
pub fn unity_zp_mul(f: *mut _unity_zp, g: *const _unity_zp, h: *const _unity_zp);
pub fn unity_zp_sqr(f: *mut _unity_zp, g: *const _unity_zp);
pub fn unity_zp_mul_inplace(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_sqr_inplace(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_ar1(t: *mut fmpz_t);
pub fn unity_zp_ar2(t: *mut fmpz_t);
pub fn unity_zp_ar3(t: *mut fmpz_t);
pub fn unity_zp_ar4(t: *mut fmpz_t);
pub fn unity_zp_mul3(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_mul4(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_mul5(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_mul7(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_mul8(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_mul9(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_mul11(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_mul16(
f: *mut _unity_zp,
g: *const _unity_zp,
h: *const _unity_zp,
t: *mut fmpz_t,
);
pub fn unity_zp_sqr3(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_sqr4(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_sqr5(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_sqr7(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_sqr8(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_sqr9(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_sqr11(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_sqr16(f: *mut _unity_zp, g: *const _unity_zp, t: *mut fmpz_t);
pub fn unity_zp_pow_fmpz(f: *mut _unity_zp, g: *const _unity_zp, pow: *const fmpz);
pub fn unity_zp_pow_ui(f: *mut _unity_zp, g: *const _unity_zp, pow: ulong);
pub fn _unity_zp_pow_select_k(n: *const fmpz) -> ulong;
pub fn unity_zp_pow_2k_fmpz(f: *mut _unity_zp, g: *const _unity_zp, pow: *const fmpz);
pub fn unity_zp_pow_2k_ui(f: *mut _unity_zp, g: *const _unity_zp, pow: ulong);
pub fn unity_zp_pow_sliding_fmpz(f: *mut _unity_zp, g: *mut _unity_zp, pow: *const fmpz);
pub fn _unity_zp_reduce_cyclotomic_divmod(f: *mut _unity_zp);
pub fn _unity_zp_reduce_cyclotomic(f: *mut _unity_zp);
pub fn unity_zp_reduce_cyclotomic(f: *mut _unity_zp, g: *const _unity_zp);
pub fn unity_zp_aut(f: *mut _unity_zp, g: *const _unity_zp, x: ulong);
pub fn unity_zp_aut_inv(f: *mut _unity_zp, g: *const _unity_zp, x: ulong);
pub fn aprcl_f_table(q: ulong) -> nn_ptr;
pub fn _unity_zp_jacobi_sum_pq_general(
f: *mut _unity_zp,
table: nn_ptr,
p: ulong,
q: ulong,
k: ulong,
a: ulong,
b: ulong,
);
pub fn unity_zp_jacobi_sum_pq(f: *mut _unity_zp, q: ulong, p: ulong);
pub fn unity_zp_jacobi_sum_2q_one(f: *mut _unity_zp, q: ulong);
pub fn unity_zp_jacobi_sum_2q_two(f: *mut _unity_zp, q: ulong);
pub fn unity_zpq_init(f: *mut _unity_zpq, q: ulong, p: ulong, n: *const fmpz);
pub fn unity_zpq_clear(f: *mut _unity_zpq);
pub fn unity_zpq_copy(f: *mut _unity_zpq, g: *const _unity_zpq);
pub fn unity_zpq_swap(f: *mut _unity_zpq, g: *mut _unity_zpq);
pub fn unity_zpq_equal(f: *const _unity_zpq, g: *const _unity_zpq) -> libc::c_int;
pub fn unity_zpq_coeff_set_fmpz(f: *mut _unity_zpq, i: slong, j: slong, x: *const fmpz);
pub fn unity_zpq_coeff_set_ui(f: *mut _unity_zpq, i: slong, j: slong, x: ulong);
pub fn unity_zpq_coeff_add(f: *mut _unity_zpq, i: slong, j: slong, x: *const fmpz);
pub fn unity_zpq_coeff_add_ui(f: *mut _unity_zpq, i: slong, j: slong, x: ulong);
pub fn unity_zpq_add(f: *mut _unity_zpq, g: *const _unity_zpq, h: *const _unity_zpq);
pub fn unity_zpq_mul(f: *mut _unity_zpq, g: *const _unity_zpq, h: *const _unity_zpq);
pub fn _unity_zpq_mul_unity_p(f: *mut _unity_zpq);
pub fn unity_zpq_mul_unity_p_pow(f: *mut _unity_zpq, g: *const _unity_zpq, p: slong);
pub fn unity_zpq_pow(f: *mut _unity_zpq, g: *const _unity_zpq, p: *const fmpz);
pub fn unity_zpq_pow_ui(f: *mut _unity_zpq, g: *const _unity_zpq, pow: ulong);
pub fn unity_zpq_gauss_sum(f: *mut _unity_zpq, q: ulong, p: ulong);
pub fn unity_zpq_gauss_sum_character_pow(f: *mut _unity_zpq, q: ulong, p: ulong, pow: ulong);
pub fn unity_zpq_gauss_sum_sigma_pow(f: *mut _unity_zpq, q: ulong, p: ulong);
}