use crate::deps::*;
use crate::arb_types::*;
use crate::fmpz_types::*;
#[repr(C)]
pub struct hypgeom_struct {
pub A: fmpz_poly_t,
pub B: fmpz_poly_t,
pub P: fmpz_poly_t,
pub Q: fmpz_poly_t,
pub have_precomputed: libc::c_int,
pub r: slong,
pub boundC: slong,
pub boundD: slong,
pub boundK: slong,
pub MK: mag_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of hypgeom_struct"][::std::mem::size_of::<hypgeom_struct>() - 152usize];
["Alignment of hypgeom_struct"][::std::mem::align_of::<hypgeom_struct>() - 8usize];
["Offset of field: hypgeom_struct::A"][::std::mem::offset_of!(hypgeom_struct, A) - 0usize];
["Offset of field: hypgeom_struct::B"][::std::mem::offset_of!(hypgeom_struct, B) - 24usize];
["Offset of field: hypgeom_struct::P"][::std::mem::offset_of!(hypgeom_struct, P) - 48usize];
["Offset of field: hypgeom_struct::Q"][::std::mem::offset_of!(hypgeom_struct, Q) - 72usize];
["Offset of field: hypgeom_struct::have_precomputed"]
[::std::mem::offset_of!(hypgeom_struct, have_precomputed) - 96usize];
["Offset of field: hypgeom_struct::r"][::std::mem::offset_of!(hypgeom_struct, r) - 104usize];
["Offset of field: hypgeom_struct::boundC"]
[::std::mem::offset_of!(hypgeom_struct, boundC) - 112usize];
["Offset of field: hypgeom_struct::boundD"]
[::std::mem::offset_of!(hypgeom_struct, boundD) - 120usize];
["Offset of field: hypgeom_struct::boundK"]
[::std::mem::offset_of!(hypgeom_struct, boundK) - 128usize];
["Offset of field: hypgeom_struct::MK"][::std::mem::offset_of!(hypgeom_struct, MK) - 136usize];
};
impl Default for hypgeom_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 hypgeom_t = [hypgeom_struct; 1usize];
extern "C" {
pub fn hypgeom_init(hyp: *mut hypgeom_struct);
pub fn hypgeom_clear(hyp: *mut hypgeom_struct);
pub fn hypgeom_precompute(hyp: *mut hypgeom_struct);
pub fn hypgeom_estimate_terms(z: *const mag_struct, r: libc::c_int, prec: slong) -> slong;
pub fn hypgeom_bound(
error: *mut mag_struct,
r: libc::c_int,
C: slong,
D: slong,
K: slong,
TK: *const mag_struct,
z: *const mag_struct,
prec: slong,
) -> slong;
pub fn arb_hypgeom_sum(
P: *mut arb_struct,
Q: *mut arb_struct,
hyp: *const hypgeom_struct,
n: slong,
prec: slong,
);
pub fn arb_hypgeom_infsum(
P: *mut arb_struct,
Q: *mut arb_struct,
hyp: *mut hypgeom_struct,
target_prec: slong,
prec: slong,
);
}