use crate::deps::*;
use crate::arb_types::*;
use crate::flint::*;
pub const BERNOULLI_REV_MIN: u32 = 32;
#[repr(C)]
pub struct bernoulli_rev_struct {
pub alloc: slong,
pub prec: slong,
pub max_power: slong,
pub powers: *mut fmpz,
pub pow_error: fmpz_t,
pub prefactor: arb_t,
pub two_pi_squared: arb_t,
pub n: ulong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of bernoulli_rev_struct"][::std::mem::size_of::<bernoulli_rev_struct>() - 144usize];
["Alignment of bernoulli_rev_struct"][::std::mem::align_of::<bernoulli_rev_struct>() - 8usize];
["Offset of field: bernoulli_rev_struct::alloc"]
[::std::mem::offset_of!(bernoulli_rev_struct, alloc) - 0usize];
["Offset of field: bernoulli_rev_struct::prec"]
[::std::mem::offset_of!(bernoulli_rev_struct, prec) - 8usize];
["Offset of field: bernoulli_rev_struct::max_power"]
[::std::mem::offset_of!(bernoulli_rev_struct, max_power) - 16usize];
["Offset of field: bernoulli_rev_struct::powers"]
[::std::mem::offset_of!(bernoulli_rev_struct, powers) - 24usize];
["Offset of field: bernoulli_rev_struct::pow_error"]
[::std::mem::offset_of!(bernoulli_rev_struct, pow_error) - 32usize];
["Offset of field: bernoulli_rev_struct::prefactor"]
[::std::mem::offset_of!(bernoulli_rev_struct, prefactor) - 40usize];
["Offset of field: bernoulli_rev_struct::two_pi_squared"]
[::std::mem::offset_of!(bernoulli_rev_struct, two_pi_squared) - 88usize];
["Offset of field: bernoulli_rev_struct::n"]
[::std::mem::offset_of!(bernoulli_rev_struct, n) - 136usize];
};
impl Default for bernoulli_rev_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 bernoulli_rev_t = [bernoulli_rev_struct; 1usize];
extern "C" {
pub static mut bernoulli_cache_num: slong;
pub static mut bernoulli_cache: *mut fmpq;
pub fn bernoulli_cache_compute(n: slong);
#[link_name = "bernoulli_denom_size__extern"]
pub fn bernoulli_denom_size(n: slong) -> slong;
#[link_name = "bernoulli_zeta_terms__extern"]
pub fn bernoulli_zeta_terms(s: ulong, prec: slong) -> slong;
#[link_name = "bernoulli_power_prec__extern"]
pub fn bernoulli_power_prec(i: slong, s1: ulong, wp: slong) -> slong;
#[link_name = "bernoulli_global_prec__extern"]
pub fn bernoulli_global_prec(nmax: ulong) -> slong;
pub fn bernoulli_rev_init(iter: *mut bernoulli_rev_struct, nmax: ulong);
pub fn bernoulli_rev_next(numer: *mut fmpz, denom: *mut fmpz, iter: *mut bernoulli_rev_struct);
pub fn bernoulli_rev_clear(iter: *mut bernoulli_rev_struct);
pub fn bernoulli_fmpq_vec_no_cache(res: *mut fmpq, a: ulong, num: slong);
pub fn bernoulli_bound_2exp_si(n: ulong) -> slong;
pub fn bernoulli_mod_p_harvey(k: ulong, p: ulong) -> ulong;
pub fn _bernoulli_fmpq_ui_multi_mod(num: *mut fmpz, den: *mut fmpz, n: ulong, alpha: f64);
pub fn _bernoulli_fmpq_ui_zeta(num: *mut fmpz, den: *mut fmpz, n: ulong);
pub fn _bernoulli_fmpq_ui(num: *mut fmpz, den: *mut fmpz, n: ulong);
pub fn bernoulli_fmpq_ui(b: *mut fmpq, n: ulong);
}