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::*;
use crate::fmpz_types::*;


extern "C" {
    #[link_name = "fmpz_poly_mat_entry__extern"]
    pub fn fmpz_poly_mat_entry(
        mat: *const fmpz_poly_mat_struct,
        i: slong,
        j: slong,
    ) -> *mut fmpz_poly_struct;
    #[link_name = "fmpz_poly_mat_nrows__extern"]
    pub fn fmpz_poly_mat_nrows(mat: *const fmpz_poly_mat_struct) -> slong;
    #[link_name = "fmpz_poly_mat_ncols__extern"]
    pub fn fmpz_poly_mat_ncols(mat: *const fmpz_poly_mat_struct) -> slong;
    pub fn fmpz_poly_mat_init(mat: *mut fmpz_poly_mat_struct, rows: slong, cols: slong);
    pub fn fmpz_poly_mat_init_set(mat: *mut fmpz_poly_mat_struct, src: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_swap(mat1: *mut fmpz_poly_mat_struct, mat2: *mut fmpz_poly_mat_struct);
    #[link_name = "fmpz_poly_mat_swap_entrywise__extern"]
    pub fn fmpz_poly_mat_swap_entrywise(
        mat1: *mut fmpz_poly_mat_struct,
        mat2: *mut fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_set(mat1: *mut fmpz_poly_mat_struct, mat2: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_clear(mat: *mut fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_equal(
        mat1: *const fmpz_poly_mat_struct,
        mat2: *const fmpz_poly_mat_struct,
    ) -> libc::c_int;
    pub fn fmpz_poly_mat_is_zero(mat: *const fmpz_poly_mat_struct) -> libc::c_int;
    pub fn fmpz_poly_mat_is_one(mat: *const fmpz_poly_mat_struct) -> libc::c_int;
    #[link_name = "fmpz_poly_mat_is_empty__extern"]
    pub fn fmpz_poly_mat_is_empty(mat: *const fmpz_poly_mat_struct) -> libc::c_int;
    #[link_name = "fmpz_poly_mat_is_square__extern"]
    pub fn fmpz_poly_mat_is_square(mat: *const fmpz_poly_mat_struct) -> libc::c_int;
    pub fn fmpz_poly_mat_zero(mat: *mut fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_one(mat: *mut fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_randtest(
        mat: *mut fmpz_poly_mat_struct,
        state: *mut flint_rand_struct,
        len: slong,
        bits: flint_bitcnt_t,
    );
    pub fn fmpz_poly_mat_randtest_unsigned(
        mat: *mut fmpz_poly_mat_struct,
        state: *mut flint_rand_struct,
        len: slong,
        bits: flint_bitcnt_t,
    );
    pub fn fmpz_poly_mat_randtest_sparse(
        A: *mut fmpz_poly_mat_struct,
        state: *mut flint_rand_struct,
        len: slong,
        bits: flint_bitcnt_t,
        density: f32,
    );
    pub fn fmpz_poly_mat_window_init(
        window: *mut fmpz_poly_mat_struct,
        mat: *const fmpz_poly_mat_struct,
        r1: slong,
        c1: slong,
        r2: slong,
        c2: slong,
    );
    pub fn fmpz_poly_mat_window_clear(window: *mut fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_concat_horizontal(
        res: *mut fmpz_poly_mat_struct,
        mat1: *const fmpz_poly_mat_struct,
        mat2: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_concat_vertical(
        res: *mut fmpz_poly_mat_struct,
        mat1: *const fmpz_poly_mat_struct,
        mat2: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_print(mat: *const fmpz_poly_mat_struct, x: *const libc::c_char);
    pub fn fmpz_poly_mat_max_bits(A: *const fmpz_poly_mat_struct) -> slong;
    pub fn fmpz_poly_mat_max_length(A: *const fmpz_poly_mat_struct) -> slong;
    pub fn fmpz_poly_mat_transpose(B: *mut fmpz_poly_mat_struct, A: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_truncate(A: *mut fmpz_poly_mat_struct, len: slong);
    pub fn fmpz_poly_mat_scalar_mul_fmpz_poly(
        B: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        c: *const fmpz_poly_struct,
    );
    pub fn fmpz_poly_mat_scalar_mul_fmpz(
        B: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        c: *const fmpz,
    );
    pub fn fmpz_poly_mat_add(
        C: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_sub(
        C: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_neg(B: *mut fmpz_poly_mat_struct, A: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_mul(
        C: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_mul_classical(
        C: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_mul_KS(
        C: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_mullow(
        C: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
        len: slong,
    );
    pub fn fmpz_poly_mat_sqr(B: *mut fmpz_poly_mat_struct, A: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_sqr_classical(
        B: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_sqr_KS(B: *mut fmpz_poly_mat_struct, A: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_sqrlow(
        B: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        len: slong,
    );
    pub fn fmpz_poly_mat_pow(
        B: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        exp: ulong,
    );
    pub fn fmpz_poly_mat_pow_trunc(
        B: *mut fmpz_poly_mat_struct,
        A: *const fmpz_poly_mat_struct,
        exp: ulong,
        len: slong,
    );
    pub fn fmpz_poly_mat_prod(
        res: *mut fmpz_poly_mat_struct,
        factors: *mut fmpz_poly_mat_t,
        n: slong,
    );
    pub fn fmpz_poly_mat_evaluate_fmpz(
        B: *mut fmpz_mat_struct,
        A: *const fmpz_poly_mat_struct,
        x: *const fmpz,
    );
    pub fn fmpz_poly_mat_find_pivot_any(
        mat: *const fmpz_poly_mat_struct,
        start_row: slong,
        end_row: slong,
        c: slong,
    ) -> slong;
    pub fn fmpz_poly_mat_find_pivot_partial(
        mat: *const fmpz_poly_mat_struct,
        start_row: slong,
        end_row: slong,
        c: slong,
    ) -> slong;
    pub fn fmpz_poly_mat_fflu(
        B: *mut fmpz_poly_mat_struct,
        den: *mut fmpz_poly_struct,
        perm: *mut slong,
        A: *const fmpz_poly_mat_struct,
        rank_check: libc::c_int,
    ) -> slong;
    pub fn fmpz_poly_mat_rref(
        B: *mut fmpz_poly_mat_struct,
        den: *mut fmpz_poly_struct,
        A: *const fmpz_poly_mat_struct,
    ) -> slong;
    pub fn fmpz_poly_mat_trace(trace: *mut fmpz_poly_struct, mat: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_det(det: *mut fmpz_poly_struct, A: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_det_fflu(det: *mut fmpz_poly_struct, A: *const fmpz_poly_mat_struct);
    pub fn fmpz_poly_mat_det_interpolate(
        det: *mut fmpz_poly_struct,
        A: *const fmpz_poly_mat_struct,
    );
    pub fn fmpz_poly_mat_rank(A: *const fmpz_poly_mat_struct) -> slong;
    pub fn fmpz_poly_mat_inv(
        Ainv: *mut fmpz_poly_mat_struct,
        den: *mut fmpz_poly_struct,
        A: *const fmpz_poly_mat_struct,
    ) -> libc::c_int;
    pub fn fmpz_poly_mat_nullspace(
        res: *mut fmpz_poly_mat_struct,
        mat: *const fmpz_poly_mat_struct,
    ) -> slong;
    pub fn fmpz_poly_mat_solve(
        X: *mut fmpz_poly_mat_struct,
        den: *mut fmpz_poly_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    ) -> libc::c_int;
    pub fn fmpz_poly_mat_solve_fflu(
        X: *mut fmpz_poly_mat_struct,
        den: *mut fmpz_poly_struct,
        A: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    ) -> libc::c_int;
    pub fn fmpz_poly_mat_solve_fflu_precomp(
        X: *mut fmpz_poly_mat_struct,
        perm: *const slong,
        FFLU: *const fmpz_poly_mat_struct,
        B: *const fmpz_poly_mat_struct,
    );
}