1use crate::deps::*;
4use crate::arb_types::*;
5use crate::flint::*;
6
7
8pub const BERNOULLI_REV_MIN: u32 = 32;
9#[repr(C)]
10pub struct bernoulli_rev_struct {
11 pub alloc: slong,
12 pub prec: slong,
13 pub max_power: slong,
14 pub powers: *mut fmpz,
15 pub pow_error: fmpz_t,
16 pub prefactor: arb_t,
17 pub two_pi_squared: arb_t,
18 pub n: ulong,
19}
20#[allow(clippy::unnecessary_operation, clippy::identity_op)]
21const _: () = {
22 ["Size of bernoulli_rev_struct"][::std::mem::size_of::<bernoulli_rev_struct>() - 144usize];
23 ["Alignment of bernoulli_rev_struct"][::std::mem::align_of::<bernoulli_rev_struct>() - 8usize];
24 ["Offset of field: bernoulli_rev_struct::alloc"]
25 [::std::mem::offset_of!(bernoulli_rev_struct, alloc) - 0usize];
26 ["Offset of field: bernoulli_rev_struct::prec"]
27 [::std::mem::offset_of!(bernoulli_rev_struct, prec) - 8usize];
28 ["Offset of field: bernoulli_rev_struct::max_power"]
29 [::std::mem::offset_of!(bernoulli_rev_struct, max_power) - 16usize];
30 ["Offset of field: bernoulli_rev_struct::powers"]
31 [::std::mem::offset_of!(bernoulli_rev_struct, powers) - 24usize];
32 ["Offset of field: bernoulli_rev_struct::pow_error"]
33 [::std::mem::offset_of!(bernoulli_rev_struct, pow_error) - 32usize];
34 ["Offset of field: bernoulli_rev_struct::prefactor"]
35 [::std::mem::offset_of!(bernoulli_rev_struct, prefactor) - 40usize];
36 ["Offset of field: bernoulli_rev_struct::two_pi_squared"]
37 [::std::mem::offset_of!(bernoulli_rev_struct, two_pi_squared) - 88usize];
38 ["Offset of field: bernoulli_rev_struct::n"]
39 [::std::mem::offset_of!(bernoulli_rev_struct, n) - 136usize];
40};
41impl Default for bernoulli_rev_struct {
42 fn default() -> Self {
43 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
44 unsafe {
45 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
46 s.assume_init()
47 }
48 }
49}
50pub type bernoulli_rev_t = [bernoulli_rev_struct; 1usize];
51extern "C" {
52 pub static mut bernoulli_cache_num: slong;
53 pub static mut bernoulli_cache: *mut fmpq;
54 pub fn bernoulli_cache_compute(n: slong);
55 #[link_name = "bernoulli_denom_size__extern"]
56 pub fn bernoulli_denom_size(n: slong) -> slong;
57 #[link_name = "bernoulli_zeta_terms__extern"]
58 pub fn bernoulli_zeta_terms(s: ulong, prec: slong) -> slong;
59 #[link_name = "bernoulli_power_prec__extern"]
60 pub fn bernoulli_power_prec(i: slong, s1: ulong, wp: slong) -> slong;
61 #[link_name = "bernoulli_global_prec__extern"]
62 pub fn bernoulli_global_prec(nmax: ulong) -> slong;
63 pub fn bernoulli_rev_init(iter: *mut bernoulli_rev_struct, nmax: ulong);
64 pub fn bernoulli_rev_next(numer: *mut fmpz, denom: *mut fmpz, iter: *mut bernoulli_rev_struct);
65 pub fn bernoulli_rev_clear(iter: *mut bernoulli_rev_struct);
66 pub fn bernoulli_fmpq_vec_no_cache(res: *mut fmpq, a: ulong, num: slong);
67 pub fn bernoulli_bound_2exp_si(n: ulong) -> slong;
68 pub fn bernoulli_mod_p_harvey(k: ulong, p: ulong) -> ulong;
69 pub fn _bernoulli_fmpq_ui_multi_mod(num: *mut fmpz, den: *mut fmpz, n: ulong, alpha: f64);
70 pub fn _bernoulli_fmpq_ui_zeta(num: *mut fmpz, den: *mut fmpz, n: ulong);
71 pub fn _bernoulli_fmpq_ui(num: *mut fmpz, den: *mut fmpz, n: ulong);
72 pub fn bernoulli_fmpq_ui(b: *mut fmpq, n: ulong);
73}