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::nmod_types::*;


extern "C" {
    #[link_name = "nmod_poly_mat_entry__extern"]
    pub fn nmod_poly_mat_entry(
        mat: *const nmod_poly_mat_struct,
        i: slong,
        j: slong,
    ) -> *mut nmod_poly_struct;
    #[link_name = "nmod_poly_mat_nrows__extern"]
    pub fn nmod_poly_mat_nrows(mat: *const nmod_poly_mat_struct) -> slong;
    #[link_name = "nmod_poly_mat_ncols__extern"]
    pub fn nmod_poly_mat_ncols(mat: *const nmod_poly_mat_struct) -> slong;
    pub fn nmod_poly_mat_init(mat: *mut nmod_poly_mat_struct, rows: slong, cols: slong, n: ulong);
    pub fn nmod_poly_mat_init_set(mat: *mut nmod_poly_mat_struct, src: *const nmod_poly_mat_struct);
    #[link_name = "nmod_poly_mat_swap__extern"]
    pub fn nmod_poly_mat_swap(mat1: *mut nmod_poly_mat_struct, mat2: *mut nmod_poly_mat_struct);
    #[link_name = "nmod_poly_mat_swap_entrywise__extern"]
    pub fn nmod_poly_mat_swap_entrywise(
        mat1: *mut nmod_poly_mat_struct,
        mat2: *mut nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_set(mat1: *mut nmod_poly_mat_struct, mat2: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_set_nmod_mat(
        pmat: *mut nmod_poly_mat_struct,
        cmat: *const nmod_mat_struct,
    );
    pub fn nmod_poly_mat_clear(mat: *mut nmod_poly_mat_struct);
    pub fn nmod_poly_mat_transpose(B: *mut nmod_poly_mat_struct, A: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_set_trunc(
        res: *mut nmod_poly_mat_struct,
        pmat: *const nmod_poly_mat_struct,
        len: libc::c_long,
    );
    #[link_name = "nmod_poly_mat_truncate__extern"]
    pub fn nmod_poly_mat_truncate(pmat: *mut nmod_poly_mat_struct, len: libc::c_long);
    pub fn nmod_poly_mat_shift_left(
        res: *mut nmod_poly_mat_struct,
        pmat: *const nmod_poly_mat_struct,
        k: slong,
    );
    pub fn nmod_poly_mat_shift_right(
        res: *mut nmod_poly_mat_struct,
        pmat: *const nmod_poly_mat_struct,
        k: slong,
    );
    #[link_name = "nmod_poly_mat_modulus__extern"]
    pub fn nmod_poly_mat_modulus(mat: *const nmod_poly_mat_struct) -> ulong;
    pub fn nmod_poly_mat_get_coeff_mat(
        coeff: *mut nmod_mat_struct,
        pmat: *const nmod_poly_mat_struct,
        deg: slong,
    );
    pub fn nmod_poly_mat_set_coeff_mat(
        pmat: *mut nmod_poly_mat_struct,
        coeff: *const nmod_mat_struct,
        deg: slong,
    );
    pub fn nmod_poly_mat_equal(
        mat1: *const nmod_poly_mat_struct,
        mat2: *const nmod_poly_mat_struct,
    ) -> libc::c_int;
    pub fn nmod_poly_mat_equal_nmod_mat(
        pmat: *const nmod_poly_mat_struct,
        cmat: *const nmod_mat_struct,
    ) -> libc::c_int;
    pub fn nmod_poly_mat_is_zero(mat: *const nmod_poly_mat_struct) -> libc::c_int;
    pub fn nmod_poly_mat_is_one(mat: *const nmod_poly_mat_struct) -> libc::c_int;
    #[link_name = "nmod_poly_mat_is_empty__extern"]
    pub fn nmod_poly_mat_is_empty(mat: *const nmod_poly_mat_struct) -> libc::c_int;
    #[link_name = "nmod_poly_mat_is_square__extern"]
    pub fn nmod_poly_mat_is_square(mat: *const nmod_poly_mat_struct) -> libc::c_int;
    pub fn nmod_poly_mat_zero(mat: *mut nmod_poly_mat_struct);
    pub fn nmod_poly_mat_one(mat: *mut nmod_poly_mat_struct);
    pub fn nmod_poly_mat_randtest(
        mat: *mut nmod_poly_mat_struct,
        state: *mut flint_rand_struct,
        len: slong,
    );
    pub fn nmod_poly_mat_randtest_sparse(
        A: *mut nmod_poly_mat_struct,
        state: *mut flint_rand_struct,
        len: slong,
        density: f32,
    );
    pub fn nmod_poly_mat_window_init(
        window: *mut nmod_poly_mat_struct,
        mat: *const nmod_poly_mat_struct,
        r1: slong,
        c1: slong,
        r2: slong,
        c2: slong,
    );
    pub fn nmod_poly_mat_window_clear(window: *mut nmod_poly_mat_struct);
    pub fn nmod_poly_mat_concat_horizontal(
        res: *mut nmod_poly_mat_struct,
        mat1: *const nmod_poly_mat_struct,
        mat2: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_concat_vertical(
        res: *mut nmod_poly_mat_struct,
        mat1: *const nmod_poly_mat_struct,
        mat2: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_print(mat: *const nmod_poly_mat_struct, x: *const libc::c_char);
    pub fn nmod_poly_mat_max_length(A: *const nmod_poly_mat_struct) -> slong;
    #[link_name = "nmod_poly_mat_degree__extern"]
    pub fn nmod_poly_mat_degree(pmat: *const nmod_poly_mat_struct) -> slong;
    pub fn nmod_poly_mat_scalar_mul_nmod_poly(
        B: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        c: *const nmod_poly_struct,
    );
    pub fn nmod_poly_mat_scalar_mul_nmod(
        B: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        c: ulong,
    );
    pub fn nmod_poly_mat_add(
        C: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_sub(
        C: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_neg(B: *mut nmod_poly_mat_struct, A: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_mul(
        C: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_mul_interpolate(
        C: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_mul_classical(
        C: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_mul_KS(
        C: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_sqr(B: *mut nmod_poly_mat_struct, A: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_sqr_classical(
        B: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_sqr_KS(B: *mut nmod_poly_mat_struct, A: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_sqr_interpolate(
        B: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_pow(
        B: *mut nmod_poly_mat_struct,
        A: *const nmod_poly_mat_struct,
        exp: ulong,
    );
    pub fn nmod_poly_mat_evaluate_nmod(
        B: *mut nmod_mat_struct,
        A: *const nmod_poly_mat_struct,
        x: ulong,
    );
    pub fn nmod_poly_mat_find_pivot_any(
        mat: *const nmod_poly_mat_struct,
        start_row: slong,
        end_row: slong,
        c: slong,
    ) -> slong;
    pub fn nmod_poly_mat_find_pivot_partial(
        mat: *const nmod_poly_mat_struct,
        start_row: slong,
        end_row: slong,
        c: slong,
    ) -> slong;
    pub fn nmod_poly_mat_fflu(
        B: *mut nmod_poly_mat_struct,
        den: *mut nmod_poly_struct,
        perm: *mut slong,
        A: *const nmod_poly_mat_struct,
        rank_check: libc::c_int,
    ) -> slong;
    pub fn nmod_poly_mat_rref(
        B: *mut nmod_poly_mat_struct,
        den: *mut nmod_poly_struct,
        A: *const nmod_poly_mat_struct,
    ) -> slong;
    pub fn nmod_poly_mat_trace(trace: *mut nmod_poly_struct, mat: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_det(det: *mut nmod_poly_struct, A: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_det_fflu(det: *mut nmod_poly_struct, A: *const nmod_poly_mat_struct);
    pub fn nmod_poly_mat_det_interpolate(
        det: *mut nmod_poly_struct,
        A: *const nmod_poly_mat_struct,
    );
    pub fn nmod_poly_mat_rank(A: *const nmod_poly_mat_struct) -> slong;
    pub fn nmod_poly_mat_inv(
        Ainv: *mut nmod_poly_mat_struct,
        den: *mut nmod_poly_struct,
        A: *const nmod_poly_mat_struct,
    ) -> libc::c_int;
    pub fn nmod_poly_mat_nullspace(
        res: *mut nmod_poly_mat_struct,
        mat: *const nmod_poly_mat_struct,
    ) -> slong;
    pub fn nmod_poly_mat_solve(
        X: *mut nmod_poly_mat_struct,
        den: *mut nmod_poly_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    ) -> libc::c_int;
    pub fn nmod_poly_mat_solve_fflu(
        X: *mut nmod_poly_mat_struct,
        den: *mut nmod_poly_struct,
        A: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    ) -> libc::c_int;
    pub fn nmod_poly_mat_solve_fflu_precomp(
        X: *mut nmod_poly_mat_struct,
        perm: *const slong,
        FFLU: *const nmod_poly_mat_struct,
        B: *const nmod_poly_mat_struct,
    );
}