1#![allow(non_camel_case_types)]
2
3use crate::arb::arb_t;
6use flint_sys::deps::*;
7use flint_sys::fmpq::fmpq;
8use flint_sys::fmpz::{fmpz, fmpz_t};
9
10#[repr(C)]
11#[derive(Copy, Clone)]
12pub struct bernoulli_rev_struct {
13 pub alloc: mp_limb_signed_t,
14 pub prec: mp_limb_signed_t,
15 pub max_power: mp_limb_signed_t,
16 pub powers: *mut fmpz,
17 pub pow_error: fmpz_t,
18 pub prefactor: arb_t,
19 pub two_pi_squared: arb_t,
20 pub n: mp_limb_t,
21}
22
23pub type bernoulli_rev_t = [bernoulli_rev_struct; 1usize];
24
25extern "C" {
26 pub static mut bernoulli_cache_num: mp_limb_signed_t;
27 pub static mut bernoulli_cache: *mut fmpq;
28 pub fn bernoulli_cache_compute(n: mp_limb_signed_t);
29 pub fn bernoulli_rev_init(iter: *mut bernoulli_rev_struct, nmax: mp_limb_t);
30 pub fn bernoulli_rev_next(numer: *mut fmpz, denom: *mut fmpz, iter: *mut bernoulli_rev_struct);
31 pub fn bernoulli_rev_clear(iter: *mut bernoulli_rev_struct);
32 pub fn bernoulli_bound_2exp_si(n: mp_limb_t) -> mp_limb_signed_t;
33 pub fn _bernoulli_fmpq_ui_zeta(num: *mut fmpz, den: *mut fmpz, n: mp_limb_t);
34 pub fn _bernoulli_fmpq_ui(num: *mut fmpz, den: *mut fmpz, n: mp_limb_t);
35 pub fn bernoulli_fmpq_ui(b: *mut fmpq, n: mp_limb_t);
36}