flint-sys 0.9.0

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

use libc::*;
use crate::deps::*;
use crate::flint::*;
use crate::fmpz_types::*;


#[repr(C)]
pub struct ecm_s {
    pub t: nn_ptr,
    pub u: nn_ptr,
    pub v: nn_ptr,
    pub w: nn_ptr,
    pub x: nn_ptr,
    pub z: nn_ptr,
    pub a24: nn_ptr,
    pub ninv: nn_ptr,
    pub one: nn_ptr,
    pub GCD_table: *mut libc::c_uchar,
    pub prime_table: *mut *mut libc::c_uchar,
    pub n_size: ulong,
    pub normbits: ulong,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of ecm_s"][::std::mem::size_of::<ecm_s>() - 104usize];
    ["Alignment of ecm_s"][::std::mem::align_of::<ecm_s>() - 8usize];
    ["Offset of field: ecm_s::t"][::std::mem::offset_of!(ecm_s, t) - 0usize];
    ["Offset of field: ecm_s::u"][::std::mem::offset_of!(ecm_s, u) - 8usize];
    ["Offset of field: ecm_s::v"][::std::mem::offset_of!(ecm_s, v) - 16usize];
    ["Offset of field: ecm_s::w"][::std::mem::offset_of!(ecm_s, w) - 24usize];
    ["Offset of field: ecm_s::x"][::std::mem::offset_of!(ecm_s, x) - 32usize];
    ["Offset of field: ecm_s::z"][::std::mem::offset_of!(ecm_s, z) - 40usize];
    ["Offset of field: ecm_s::a24"][::std::mem::offset_of!(ecm_s, a24) - 48usize];
    ["Offset of field: ecm_s::ninv"][::std::mem::offset_of!(ecm_s, ninv) - 56usize];
    ["Offset of field: ecm_s::one"][::std::mem::offset_of!(ecm_s, one) - 64usize];
    ["Offset of field: ecm_s::GCD_table"][::std::mem::offset_of!(ecm_s, GCD_table) - 72usize];
    ["Offset of field: ecm_s::prime_table"][::std::mem::offset_of!(ecm_s, prime_table) - 80usize];
    ["Offset of field: ecm_s::n_size"][::std::mem::offset_of!(ecm_s, n_size) - 88usize];
    ["Offset of field: ecm_s::normbits"][::std::mem::offset_of!(ecm_s, normbits) - 96usize];
};
impl Default for ecm_s {
    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 ecm_t = [ecm_s; 1usize];
extern "C" {
    pub fn fmpz_factor_init(factor: *mut fmpz_factor_struct);
    pub fn fmpz_factor_clear(factor: *mut fmpz_factor_struct);
    pub fn _fmpz_factor_fit_length(factor: *mut fmpz_factor_struct, len: slong);
    pub fn _fmpz_factor_set_length(factor: *mut fmpz_factor_struct, newlen: slong);
    pub fn _fmpz_factor_append(factor: *mut fmpz_factor_struct, p: *const fmpz, exp: ulong);
    pub fn _fmpz_factor_append_ui(factor: *mut fmpz_factor_struct, p: ulong, exp: ulong);
    pub fn _fmpz_factor_concat(
        factor1: *mut fmpz_factor_struct,
        factor2: *mut fmpz_factor_struct,
        exp: ulong,
    );
    pub fn fmpz_factor_fprint(fs: *mut FILE, factor: *const fmpz_factor_struct) -> libc::c_int;
    pub fn fmpz_factor_print(factor: *const fmpz_factor_struct) -> libc::c_int;
    pub fn _fmpz_factor_extend_factor_ui(factor: *mut fmpz_factor_struct, n: ulong);
    pub fn fmpz_factor_trial_range(
        factor: *mut fmpz_factor_struct,
        n: *const fmpz,
        start: ulong,
        num_primes: ulong,
    ) -> libc::c_int;
    pub fn fmpz_factor_trial(
        factor: *mut fmpz_factor_struct,
        n: *const fmpz,
        num_primes: slong,
    ) -> libc::c_int;
    pub fn fmpz_factor_no_trial(factor: *mut fmpz_factor_struct, n: *const fmpz);
    pub fn fmpz_factor_si(factor: *mut fmpz_factor_struct, n: slong);
    pub fn fmpz_factor(factor: *mut fmpz_factor_struct, n: *const fmpz);
    pub fn fmpz_factor_smooth(
        factor: *mut fmpz_factor_struct,
        n: *const fmpz,
        bits: slong,
        proved: libc::c_int,
    ) -> libc::c_int;
    pub fn fmpz_factor_pp1(
        factor: *mut fmpz,
        n: *const fmpz,
        B1: ulong,
        B2_sqrt: ulong,
        c: ulong,
    ) -> libc::c_int;
    pub fn fmpz_factor_refine(res: *mut fmpz_factor_struct, f: *const fmpz_factor_struct);
    pub fn flint_mpn_sqr_and_add_a(
        y: nn_ptr,
        a: nn_ptr,
        n: nn_ptr,
        n_size: ulong,
        ninv: nn_ptr,
        normbits: ulong,
    );
    pub fn flint_mpn_factor_pollard_brent_single(
        factor: nn_ptr,
        n: nn_ptr,
        ninv: nn_ptr,
        a: nn_ptr,
        y: nn_ptr,
        n_size: ulong,
        normbits: ulong,
        max_iters: ulong,
    ) -> libc::c_int;
    pub fn fmpz_factor_pollard_brent_single(
        p_factor: *mut fmpz,
        n_in: *mut fmpz,
        yi: *mut fmpz,
        ai: *mut fmpz,
        max_iters: ulong,
    ) -> libc::c_int;
    pub fn fmpz_factor_pollard_brent(
        factor: *mut fmpz,
        state: *mut flint_rand_struct,
        n: *mut fmpz,
        max_tries: ulong,
        max_iters: ulong,
    ) -> libc::c_int;
    pub fn fmpz_factor_expand_iterative(n: *mut fmpz, factor: *const fmpz_factor_struct);
    pub fn fmpz_factor_expand_multiexp(n: *mut fmpz, factor: *const fmpz_factor_struct);
    pub fn fmpz_factor_expand(n: *mut fmpz, factor: *const fmpz_factor_struct);
    pub fn fmpz_factor_euler_phi(res: *mut fmpz, fac: *const fmpz_factor_struct);
    pub fn fmpz_factor_moebius_mu(fac: *const fmpz_factor_struct) -> libc::c_int;
    pub fn fmpz_factor_divisor_sigma(res: *mut fmpz, k: ulong, fac: *const fmpz_factor_struct);
    pub fn fmpz_factor_ecm_init(ecm_inf: *mut ecm_s, sz: ulong);
    pub fn fmpz_factor_ecm_clear(ecm_inf: *mut ecm_s);
    pub fn fmpz_factor_ecm_double(
        x: nn_ptr,
        z: nn_ptr,
        x0: nn_ptr,
        z0: nn_ptr,
        n: nn_ptr,
        ecm_inf: *mut ecm_s,
    );
    pub fn fmpz_factor_ecm_add(
        x: nn_ptr,
        z: nn_ptr,
        x1: nn_ptr,
        z1: nn_ptr,
        x2: nn_ptr,
        z2: nn_ptr,
        x0: nn_ptr,
        z0: nn_ptr,
        n: nn_ptr,
        ecm_inf: *mut ecm_s,
    );
    pub fn fmpz_factor_ecm_mul_montgomery_ladder(
        x: nn_ptr,
        z: nn_ptr,
        x0: nn_ptr,
        z0: nn_ptr,
        k: ulong,
        n: nn_ptr,
        ecm_inf: *mut ecm_s,
    );
    pub fn fmpz_factor_ecm_select_curve(
        f: nn_ptr,
        sig: nn_ptr,
        n: nn_ptr,
        ecm_inf: *mut ecm_s,
    ) -> libc::c_int;
    pub fn fmpz_factor_ecm_stage_I(
        f: nn_ptr,
        prime_array: *const ulong,
        num: ulong,
        B1: ulong,
        n: nn_ptr,
        ecm_inf: *mut ecm_s,
    ) -> libc::c_int;
    pub fn fmpz_factor_ecm_stage_II(
        f: nn_ptr,
        B1: ulong,
        B2: ulong,
        P: ulong,
        n: nn_ptr,
        ecm_inf: *mut ecm_s,
    ) -> libc::c_int;
    pub fn fmpz_factor_ecm(
        f: *mut fmpz,
        curves: ulong,
        B1: ulong,
        B2: ulong,
        state: *mut flint_rand_struct,
        n_in: *const fmpz,
    ) -> libc::c_int;
    pub fn fmpz_factor_get_fmpz(z: *mut fmpz, factor: *const fmpz_factor_struct, i: slong);
}