flint-sys 0.9.0

Bindings to the FLINT C library
Documentation
/* automatically generated by rust-bindgen 0.70.1 */

use crate::deps::*;
use crate::flint::*;


#[repr(C)]
pub struct qfb {
    pub a: fmpz_t,
    pub b: fmpz_t,
    pub c: fmpz_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of qfb"][::std::mem::size_of::<qfb>() - 24usize];
    ["Alignment of qfb"][::std::mem::align_of::<qfb>() - 8usize];
    ["Offset of field: qfb::a"][::std::mem::offset_of!(qfb, a) - 0usize];
    ["Offset of field: qfb::b"][::std::mem::offset_of!(qfb, b) - 8usize];
    ["Offset of field: qfb::c"][::std::mem::offset_of!(qfb, c) - 16usize];
};
impl Default for qfb {
    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 qfb_t = [qfb; 1usize];
#[repr(C)]
pub struct qfb_hash_t {
    pub q: qfb_t,
    pub q2: qfb_t,
    pub iter: slong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of qfb_hash_t"][::std::mem::size_of::<qfb_hash_t>() - 56usize];
    ["Alignment of qfb_hash_t"][::std::mem::align_of::<qfb_hash_t>() - 8usize];
    ["Offset of field: qfb_hash_t::q"][::std::mem::offset_of!(qfb_hash_t, q) - 0usize];
    ["Offset of field: qfb_hash_t::q2"][::std::mem::offset_of!(qfb_hash_t, q2) - 24usize];
    ["Offset of field: qfb_hash_t::iter"][::std::mem::offset_of!(qfb_hash_t, iter) - 48usize];
};
impl Default for qfb_hash_t {
    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()
        }
    }
}
extern "C" {
    #[link_name = "qfb_init__extern"]
    pub fn qfb_init(q: *mut qfb);
    #[link_name = "qfb_clear__extern"]
    pub fn qfb_clear(q: *mut qfb);
    #[link_name = "qfb_equal__extern"]
    pub fn qfb_equal(f: *mut qfb, g: *mut qfb) -> libc::c_int;
    #[link_name = "qfb_set__extern"]
    pub fn qfb_set(f: *mut qfb, g: *mut qfb);
    #[link_name = "qfb_discriminant__extern"]
    pub fn qfb_discriminant(D: *mut fmpz, f: *mut qfb);
    pub fn qfb_print(q: *mut qfb);
    #[link_name = "qfb_array_clear__extern"]
    pub fn qfb_array_clear(forms: *mut *mut qfb, num: slong);
    pub fn qfb_hash_init(depth: slong) -> *mut qfb_hash_t;
    pub fn qfb_hash_clear(qhash: *mut qfb_hash_t, depth: slong);
    pub fn qfb_hash_insert(
        qhash: *mut qfb_hash_t,
        q: *mut qfb,
        q2: *mut qfb,
        iter: slong,
        depth: slong,
    );
    pub fn qfb_hash_find(qhash: *mut qfb_hash_t, q: *mut qfb, depth: slong) -> slong;
    pub fn qfb_reduce(r: *mut qfb, f: *mut qfb, D: *mut fmpz);
    pub fn qfb_is_reduced(r: *mut qfb) -> libc::c_int;
    pub fn qfb_reduced_forms(forms: *mut *mut qfb, d: slong) -> slong;
    pub fn qfb_reduced_forms_large(forms: *mut *mut qfb, d: slong) -> slong;
    pub fn qfb_nucomp(r: *mut qfb, f: *const qfb, g: *const qfb, D: *mut fmpz, L: *mut fmpz);
    pub fn qfb_nudupl(r: *mut qfb, f: *const qfb, D: *mut fmpz, L: *mut fmpz);
    pub fn qfb_pow_ui(r: *mut qfb, f: *mut qfb, D: *mut fmpz, exp: ulong);
    pub fn qfb_pow(r: *mut qfb, f: *mut qfb, D: *mut fmpz, exp: *mut fmpz);
    pub fn qfb_pow_with_root(r: *mut qfb, f: *mut qfb, D: *mut fmpz, e: *mut fmpz, L: *mut fmpz);
    #[link_name = "qfb_inverse__extern"]
    pub fn qfb_inverse(r: *mut qfb, f: *mut qfb);
    #[link_name = "qfb_is_principal_form__extern"]
    pub fn qfb_is_principal_form(f: *mut qfb, D: *mut fmpz) -> libc::c_int;
    #[link_name = "qfb_principal_form__extern"]
    pub fn qfb_principal_form(f: *mut qfb, D: *mut fmpz);
    #[link_name = "qfb_is_primitive__extern"]
    pub fn qfb_is_primitive(f: *mut qfb) -> libc::c_int;
    pub fn qfb_prime_form(r: *mut qfb, D: *mut fmpz, p: *mut fmpz);
    pub fn qfb_exponent_element(
        exponent: *mut fmpz,
        f: *mut qfb,
        n: *mut fmpz,
        B1: ulong,
        B2_sqrt: ulong,
    ) -> libc::c_int;
    pub fn qfb_exponent(
        exponent: *mut fmpz,
        n: *mut fmpz,
        B1: ulong,
        B2_sqrt: ulong,
        c: slong,
    ) -> libc::c_int;
    pub fn qfb_exponent_grh(
        exponent: *mut fmpz,
        n: *mut fmpz,
        B1: ulong,
        B2_sqrt: ulong,
    ) -> libc::c_int;
}