use libc::*;
use crate::deps::*;
use crate::flint::*;
use crate::fmpz_types::*;
use crate::nmod_types::*;
extern "C" {
#[link_name = "fmpz_mat_entry__extern"]
pub fn fmpz_mat_entry(mat: *const fmpz_mat_struct, i: slong, j: slong) -> *mut fmpz;
#[link_name = "fmpz_mat_row__extern"]
pub fn fmpz_mat_row(mat: *const fmpz_mat_struct, i: slong) -> *mut fmpz;
#[link_name = "fmpz_mat_nrows__extern"]
pub fn fmpz_mat_nrows(mat: *const fmpz_mat_struct) -> slong;
#[link_name = "fmpz_mat_ncols__extern"]
pub fn fmpz_mat_ncols(mat: *const fmpz_mat_struct) -> slong;
pub fn fmpz_mat_init(mat: *mut fmpz_mat_struct, rows: slong, cols: slong);
pub fn fmpz_mat_init_set(mat: *mut fmpz_mat_struct, src: *const fmpz_mat_struct);
pub fn fmpz_mat_swap(mat1: *mut fmpz_mat_struct, mat2: *mut fmpz_mat_struct);
pub fn fmpz_mat_swap_entrywise(mat1: *mut fmpz_mat_struct, mat2: *mut fmpz_mat_struct);
pub fn fmpz_mat_swap_cols(mat: *mut fmpz_mat_struct, perm: *mut slong, r: slong, s: slong);
pub fn fmpz_mat_set(mat1: *mut fmpz_mat_struct, mat2: *const fmpz_mat_struct);
pub fn fmpz_mat_clear(mat: *mut fmpz_mat_struct);
pub fn fmpz_mat_equal(
mat1: *const fmpz_mat_struct,
mat2: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_is_zero(mat: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_is_one(mat: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_is_zero_row(mat: *const fmpz_mat_struct, i: slong) -> libc::c_int;
pub fn fmpz_mat_equal_col(M: *mut fmpz_mat_struct, m: slong, n: slong) -> libc::c_int;
pub fn fmpz_mat_equal_row(M: *mut fmpz_mat_struct, m: slong, n: slong) -> libc::c_int;
#[link_name = "fmpz_mat_is_empty__extern"]
pub fn fmpz_mat_is_empty(mat: *const fmpz_mat_struct) -> libc::c_int;
#[link_name = "fmpz_mat_is_square__extern"]
pub fn fmpz_mat_is_square(mat: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_zero(mat: *mut fmpz_mat_struct);
pub fn fmpz_mat_one(mat: *mut fmpz_mat_struct);
#[link_name = "fmpz_mat_window_init__extern"]
pub fn fmpz_mat_window_init(
window: *mut fmpz_mat_struct,
mat: *const fmpz_mat_struct,
r1: slong,
c1: slong,
r2: slong,
c2: slong,
);
#[link_name = "fmpz_mat_window_clear__extern"]
pub fn fmpz_mat_window_clear(UNUSED_window: *mut fmpz_mat_struct);
pub fn _fmpz_mat_window_readonly_init_strip_initial_zero_rows(
A: *mut fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_concat_horizontal(
res: *mut fmpz_mat_struct,
mat1: *const fmpz_mat_struct,
mat2: *const fmpz_mat_struct,
);
pub fn fmpz_mat_concat_vertical(
res: *mut fmpz_mat_struct,
mat1: *const fmpz_mat_struct,
mat2: *const fmpz_mat_struct,
);
pub fn fmpz_mat_fprint(file: *mut FILE, mat: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_fprint_pretty(file: *mut FILE, mat: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_fread(file: *mut FILE, mat: *mut fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_print(mat: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_print_pretty(mat: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_read(mat: *mut fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_randbits(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
bits: flint_bitcnt_t,
);
pub fn fmpz_mat_randtest(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
bits: flint_bitcnt_t,
);
pub fn fmpz_mat_randtest_unsigned(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
bits: flint_bitcnt_t,
);
pub fn fmpz_mat_randintrel(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
bits: flint_bitcnt_t,
);
pub fn fmpz_mat_randsimdioph(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
bits: flint_bitcnt_t,
bits2: flint_bitcnt_t,
);
pub fn fmpz_mat_randntrulike(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
bits: flint_bitcnt_t,
q: ulong,
);
pub fn fmpz_mat_randntrulike2(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
bits: flint_bitcnt_t,
q: ulong,
);
pub fn fmpz_mat_randajtai(mat: *mut fmpz_mat_struct, state: *mut flint_rand_struct, alpha: f64);
pub fn fmpz_mat_randrank(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
rank: slong,
bits: flint_bitcnt_t,
);
pub fn fmpz_mat_randdet(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
det: *const fmpz,
);
pub fn fmpz_mat_randops(mat: *mut fmpz_mat_struct, state: *mut flint_rand_struct, count: slong);
pub fn fmpz_mat_randpermdiag(
mat: *mut fmpz_mat_struct,
state: *mut flint_rand_struct,
diag: *const fmpz,
n: slong,
) -> libc::c_int;
pub fn fmpz_mat_max_bits(mat: *const fmpz_mat_struct) -> slong;
pub fn fmpz_mat_transpose(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_add(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_sub(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_neg(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_scalar_mul_fmpz(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
c: *const fmpz,
);
pub fn fmpz_mat_scalar_mul_si(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, c: slong);
pub fn fmpz_mat_scalar_mul_ui(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, c: ulong);
pub fn fmpz_mat_scalar_addmul_fmpz(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
c: *const fmpz,
);
pub fn fmpz_mat_scalar_addmul_si(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, c: slong);
pub fn fmpz_mat_scalar_addmul_ui(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, c: ulong);
pub fn fmpz_mat_scalar_submul_fmpz(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
c: *const fmpz,
);
pub fn fmpz_mat_scalar_submul_si(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, c: slong);
pub fn fmpz_mat_scalar_submul_ui(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, c: ulong);
pub fn fmpz_mat_scalar_addmul_nmod_mat_fmpz(
B: *mut fmpz_mat_struct,
A: *const nmod_mat_struct,
c: *const fmpz,
);
pub fn fmpz_mat_scalar_addmul_nmod_mat_ui(
B: *mut fmpz_mat_struct,
A: *const nmod_mat_struct,
c: ulong,
);
pub fn fmpz_mat_scalar_divexact_fmpz(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
c: *const fmpz,
);
pub fn fmpz_mat_scalar_divexact_si(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
c: slong,
);
pub fn fmpz_mat_scalar_divexact_ui(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
c: ulong,
);
pub fn fmpz_mat_scalar_mul_2exp(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, exp: ulong);
pub fn fmpz_mat_scalar_tdiv_q_2exp(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
exp: ulong,
);
pub fn fmpz_mat_scalar_smod(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, P: *const fmpz);
pub fn fmpz_mat_scalar_mod_fmpz(
B: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
m: *const fmpz,
);
pub fn fmpz_mat_mul(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_mul_classical(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_mul_waksman(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_mul_strassen(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn _fmpz_mat_mul_fft(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
abits: slong,
B: *const fmpz_mat_struct,
bbits: slong,
sign: libc::c_int,
);
pub fn fmpz_mat_mul_fft(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn _fmpz_mat_mul_multi_mod(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
sign: libc::c_int,
Cbits: flint_bitcnt_t,
);
pub fn fmpz_mat_mul_multi_mod(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn _fmpz_mat_mul_blas(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
Abits: flint_bitcnt_t,
B: *const fmpz_mat_struct,
Bbits: flint_bitcnt_t,
sign: libc::c_int,
Cbits: flint_bitcnt_t,
) -> libc::c_int;
pub fn fmpz_mat_mul_blas(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn _fmpz_mat_mul_small_1(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn _fmpz_mat_mul_small_2a(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn _fmpz_mat_mul_small_2b(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn _fmpz_mat_mul_small_internal(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
Cbits: flint_bitcnt_t,
);
pub fn _fmpz_mat_mul_double_word_internal(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
sign: libc::c_int,
bits: flint_bitcnt_t,
);
pub fn _fmpz_mat_mul_small(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn _fmpz_mat_mul_double_word(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_sqr_bodrato(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_sqr(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_pow(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, exp: ulong);
pub fn fmpz_mat_mul_fmpz_vec(
c: *mut fmpz,
A: *const fmpz_mat_struct,
b: *const fmpz,
blen: slong,
);
pub fn fmpz_mat_mul_fmpz_vec_ptr(
c: *const *mut fmpz,
A: *const fmpz_mat_struct,
b: *const *const fmpz,
blen: slong,
);
pub fn fmpz_mat_fmpz_vec_mul(
c: *mut fmpz,
a: *const fmpz,
alen: slong,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_fmpz_vec_mul_ptr(
c: *const *mut fmpz,
a: *const *const fmpz,
alen: slong,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_kronecker_product(
C: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_content(ret: *mut fmpz, A: *const fmpz_mat_struct);
pub fn fmpz_mat_swap_rows(mat: *mut fmpz_mat_struct, perm: *mut slong, r: slong, s: slong);
pub fn fmpz_mat_invert_rows(mat: *mut fmpz_mat_struct, perm: *mut slong);
pub fn fmpz_mat_invert_cols(mat: *mut fmpz_mat_struct, perm: *mut slong);
pub fn fmpz_mat_find_pivot_any(
mat: *const fmpz_mat_struct,
start_row: slong,
end_row: slong,
c: slong,
) -> slong;
pub fn fmpz_mat_find_pivot_smallest(
mat: *const fmpz_mat_struct,
start_row: slong,
end_row: slong,
c: slong,
) -> slong;
pub fn fmpz_mat_fflu(
B: *mut fmpz_mat_struct,
den: *mut fmpz,
perm: *mut slong,
A: *const fmpz_mat_struct,
rank_check: libc::c_int,
) -> slong;
pub fn fmpz_mat_rank_small_inplace(B: *mut fmpz_mat_struct) -> slong;
pub fn fmpz_mat_rref(
B: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
) -> slong;
pub fn fmpz_mat_rref_fflu(
B: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
) -> slong;
pub fn fmpz_mat_rref_mul(
B: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
) -> slong;
pub fn fmpz_mat_is_in_rref_with_rank(
A: *const fmpz_mat_struct,
den: *const fmpz,
rank: slong,
) -> libc::c_int;
pub fn fmpz_mat_howell_form_mod(A: *mut fmpz_mat_struct, mod_: *const fmpz) -> slong;
pub fn fmpz_mat_strong_echelon_form_mod(A: *mut fmpz_mat_struct, mod_: *const fmpz);
pub fn fmpz_mat_trace(trace: *mut fmpz, mat: *const fmpz_mat_struct);
pub fn fmpz_mat_det_bareiss(det: *mut fmpz, A: *const fmpz_mat_struct);
pub fn fmpz_mat_det_cofactor(det: *mut fmpz, A: *const fmpz_mat_struct);
pub fn fmpz_mat_det_modular(det: *mut fmpz, A: *const fmpz_mat_struct, proved: libc::c_int);
pub fn fmpz_mat_det_modular_accelerated(
det: *mut fmpz,
A: *const fmpz_mat_struct,
proved: libc::c_int,
);
pub fn fmpz_mat_det_modular_given_divisor(
det: *mut fmpz,
A: *const fmpz_mat_struct,
d: *const fmpz,
proved: libc::c_int,
);
pub fn fmpz_mat_det(det: *mut fmpz, A: *const fmpz_mat_struct);
pub fn fmpz_mat_det_bound(bound: *mut fmpz, A: *const fmpz_mat_struct);
pub fn fmpz_mat_det_bound_nonzero(bound: *mut fmpz, A: *const fmpz_mat_struct);
pub fn fmpz_mat_det_divisor(d: *mut fmpz, A: *const fmpz_mat_struct);
pub fn fmpz_mat_permanent(res: *mut fmpz, A: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_similarity(A: *mut fmpz_mat_struct, r: slong, d: *mut fmpz);
pub fn _fmpz_mat_charpoly_berkowitz(rop: *mut fmpz, op: *const fmpz_mat_struct);
pub fn fmpz_mat_charpoly_berkowitz(cp: *mut fmpz_poly_struct, mat: *const fmpz_mat_struct);
pub fn _fmpz_mat_charpoly_modular(rop: *mut fmpz, op: *const fmpz_mat_struct);
pub fn fmpz_mat_charpoly_modular(cp: *mut fmpz_poly_struct, mat: *const fmpz_mat_struct);
#[link_name = "_fmpz_mat_charpoly__extern"]
pub fn _fmpz_mat_charpoly(cp: *mut fmpz, mat: *const fmpz_mat_struct);
#[link_name = "fmpz_mat_charpoly__extern"]
pub fn fmpz_mat_charpoly(cp: *mut fmpz_poly_struct, mat: *const fmpz_mat_struct);
pub fn _fmpz_mat_minpoly_modular(rop: *mut fmpz, op: *const fmpz_mat_struct) -> slong;
pub fn fmpz_mat_minpoly_modular(cp: *mut fmpz_poly_struct, mat: *const fmpz_mat_struct);
#[link_name = "_fmpz_mat_minpoly__extern"]
pub fn _fmpz_mat_minpoly(cp: *mut fmpz, mat: *const fmpz_mat_struct) -> slong;
#[link_name = "fmpz_mat_minpoly__extern"]
pub fn fmpz_mat_minpoly(cp: *mut fmpz_poly_struct, mat: *const fmpz_mat_struct);
pub fn fmpz_mat_rank(A: *const fmpz_mat_struct) -> slong;
pub fn fmpz_mat_solve_bound(
N: *mut fmpz,
D: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
);
pub fn fmpz_mat_solve_cramer(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_solve_fflu_precomp(
X: *mut fmpz_mat_struct,
perm: *const slong,
FFLU: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_solve_fflu(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_solve(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_find_good_prime_and_invert(
Ainv: *mut nmod_mat_struct,
A: *const fmpz_mat_struct,
det_bound: *const fmpz,
) -> ulong;
pub fn fmpz_mat_dixon_get_crt_primes(
num_primes: *mut slong,
A: *const fmpz_mat_struct,
p: ulong,
) -> *mut ulong;
pub fn _fmpz_mat_solve_dixon(
X: *mut fmpz_mat_struct,
mod_: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
Ainv: *const nmod_mat_struct,
p: ulong,
N: *const fmpz,
D: *const fmpz,
);
pub fn _fmpz_mat_solve_dixon_den(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
Ainv: *const nmod_mat_struct,
p: ulong,
N: *const fmpz,
D: *const fmpz,
);
pub fn fmpz_mat_solve_dixon(
X: *mut fmpz_mat_struct,
mod_: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_solve_dixon_den(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_solve_multi_mod_den(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_can_solve_multi_mod_den(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_can_solve_fflu(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_can_solve(
X: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
B: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_nullspace(res: *mut fmpz_mat_struct, mat: *const fmpz_mat_struct) -> slong;
pub fn fmpz_mat_inv(
B: *mut fmpz_mat_struct,
den: *mut fmpz,
A: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn fmpz_mat_set_nmod_mat(A: *mut fmpz_mat_struct, Amod: *const nmod_mat_struct);
pub fn fmpz_mat_set_nmod_mat_unsigned(A: *mut fmpz_mat_struct, Amod: *const nmod_mat_struct);
pub fn fmpz_mat_get_nmod_mat(Amod: *mut nmod_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_CRT_ui(
res: *mut fmpz_mat_struct,
mat1: *const fmpz_mat_struct,
m1: *const fmpz,
mat2: *const nmod_mat_struct,
sign: libc::c_int,
);
pub fn fmpz_mat_multi_mod_ui(
residues: *mut nmod_mat_t,
nres: slong,
mat: *const fmpz_mat_struct,
);
pub fn fmpz_mat_multi_CRT_ui(
mat: *mut fmpz_mat_struct,
residues: *mut nmod_mat_t,
nres: slong,
sign: libc::c_int,
);
pub fn fmpz_mat_hnf(H: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_hnf_transform(
H: *mut fmpz_mat_struct,
U: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
);
pub fn fmpz_mat_hnf_classical(H: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_hnf_xgcd(H: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_hnf_minors(H: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_hnf_minors_transform(
H: *mut fmpz_mat_struct,
U: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
);
pub fn fmpz_mat_hnf_modular(H: *mut fmpz_mat_struct, A: *const fmpz_mat_struct, D: *const fmpz);
pub fn fmpz_mat_hnf_modular_eldiv(A: *mut fmpz_mat_struct, D: *const fmpz);
pub fn fmpz_mat_hnf_pernet_stein(
H: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
state: *mut flint_rand_struct,
);
pub fn fmpz_mat_is_in_hnf(A: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_snf(S: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_snf_diagonal(S: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_snf_kannan_bachem(S: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_snf_iliopoulos(
S: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
mod_: *const fmpz,
);
pub fn fmpz_mat_is_in_snf(A: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_is_diagonal(A: *const fmpz_mat_struct) -> libc::c_int;
pub fn _fmpz_mat_snf_iter_bound(A: *const fmpz_mat_struct) -> slong;
pub fn fmpz_mat_snf_transform(
S: *mut fmpz_mat_struct,
U: *mut fmpz_mat_struct,
V: *mut fmpz_mat_struct,
A: *const fmpz_mat_struct,
);
pub fn fmpz_mat_elementary_divisors(ed: *mut fmpz, A: *const fmpz_mat_struct) -> slong;
pub fn fmpz_mat_is_hadamard(A: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_hadamard(A: *mut fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_gram(B: *mut fmpz_mat_struct, A: *const fmpz_mat_struct);
pub fn fmpz_mat_is_spd(A: *const fmpz_mat_struct) -> libc::c_int;
pub fn fmpz_mat_is_reduced(A: *const fmpz_mat_struct, delta: f64, eta: f64) -> libc::c_int;
pub fn fmpz_mat_is_reduced_gram(A: *const fmpz_mat_struct, delta: f64, eta: f64)
-> libc::c_int;
pub fn fmpz_mat_is_reduced_with_removal(
A: *const fmpz_mat_struct,
delta: f64,
eta: f64,
gs_B: *const fmpz,
newd: libc::c_int,
) -> libc::c_int;
pub fn fmpz_mat_is_reduced_gram_with_removal(
A: *const fmpz_mat_struct,
delta: f64,
eta: f64,
gs_B: *const fmpz,
newd: libc::c_int,
) -> libc::c_int;
pub fn fmpz_mat_lll_original(A: *mut fmpz_mat_struct, delta: *const fmpq, eta: *const fmpq);
pub fn fmpz_mat_lll_storjohann(A: *mut fmpz_mat_struct, delta: *const fmpq, eta: *const fmpq);
pub fn fmpz_mat_col_partition(
part: *mut slong,
M: *mut fmpz_mat_struct,
short_circuit: libc::c_int,
) -> libc::c_int;
pub fn fmpz_mat_next_col_van_hoeij(
M: *mut fmpz_mat_struct,
P: *mut fmpz,
col: *mut fmpz_mat_struct,
exp: slong,
U_exp: slong,
) -> libc::c_int;
}