use libc::*;
use crate::deps::*;
use crate::arb_types::*;
use crate::flint::*;
use crate::fmpq_types::*;
use crate::fmpz_types::*;
extern "C" {
#[link_name = "arb_mat_entry_ptr__extern"]
pub fn arb_mat_entry_ptr(mat: *mut arb_mat_struct, i: slong, j: slong) -> arb_ptr;
pub fn arb_mat_init(mat: *mut arb_mat_struct, r: slong, c: slong);
pub fn arb_mat_clear(mat: *mut arb_mat_struct);
#[link_name = "arb_mat_swap__extern"]
pub fn arb_mat_swap(mat1: *mut arb_mat_struct, mat2: *mut arb_mat_struct);
pub fn arb_mat_swap_entrywise(mat1: *mut arb_mat_struct, mat2: *mut arb_mat_struct);
pub fn arb_mat_window_init(
window: *mut arb_mat_struct,
mat: *const arb_mat_struct,
r1: slong,
c1: slong,
r2: slong,
c2: slong,
);
#[link_name = "arb_mat_window_clear__extern"]
pub fn arb_mat_window_clear(UNUSED_window: *mut arb_mat_struct);
pub fn arb_mat_set(dest: *mut arb_mat_struct, src: *const arb_mat_struct);
pub fn arb_mat_set_fmpz_mat(dest: *mut arb_mat_struct, src: *const fmpz_mat_struct);
pub fn arb_mat_set_round_fmpz_mat(
dest: *mut arb_mat_struct,
src: *const fmpz_mat_struct,
prec: slong,
);
pub fn arb_mat_set_fmpq_mat(
dest: *mut arb_mat_struct,
src: *const fmpq_mat_struct,
prec: slong,
);
pub fn arb_mat_randtest(
mat: *mut arb_mat_struct,
state: *mut flint_rand_struct,
prec: slong,
mag_bits: slong,
);
pub fn arb_mat_randtest_cho(
mat: *mut arb_mat_struct,
state: *mut flint_rand_struct,
prec: slong,
mag_bits: slong,
);
pub fn arb_mat_randtest_spd(
mat: *mut arb_mat_struct,
state: *mut flint_rand_struct,
prec: slong,
mag_bits: slong,
);
pub fn arb_mat_fprintd(file: *mut FILE, mat: *const arb_mat_struct, digits: slong);
pub fn arb_mat_printd(mat: *const arb_mat_struct, digits: slong);
pub fn arb_mat_eq(mat1: *const arb_mat_struct, mat2: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_ne(mat1: *const arb_mat_struct, mat2: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_equal(mat1: *const arb_mat_struct, mat2: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_overlaps(
mat1: *const arb_mat_struct,
mat2: *const arb_mat_struct,
) -> libc::c_int;
pub fn arb_mat_contains(
mat1: *const arb_mat_struct,
mat2: *const arb_mat_struct,
) -> libc::c_int;
pub fn arb_mat_contains_fmpq_mat(
mat1: *const arb_mat_struct,
mat2: *const fmpq_mat_struct,
) -> libc::c_int;
pub fn arb_mat_contains_fmpz_mat(
mat1: *const arb_mat_struct,
mat2: *const fmpz_mat_struct,
) -> libc::c_int;
#[link_name = "arb_mat_is_empty__extern"]
pub fn arb_mat_is_empty(mat: *const arb_mat_struct) -> libc::c_int;
#[link_name = "arb_mat_is_square__extern"]
pub fn arb_mat_is_square(mat: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_is_exact(A: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_is_zero(mat: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_is_finite(mat: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_is_triu(mat: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_is_tril(mat: *const arb_mat_struct) -> libc::c_int;
#[link_name = "arb_mat_is_diag__extern"]
pub fn arb_mat_is_diag(mat: *const arb_mat_struct) -> libc::c_int;
pub fn arb_mat_get_mid(B: *mut arb_mat_struct, A: *const arb_mat_struct);
pub fn arb_mat_add_error_mag(mat: *mut arb_mat_struct, err: *const mag_struct);
pub fn arb_mat_zero(mat: *mut arb_mat_struct);
pub fn arb_mat_one(mat: *mut arb_mat_struct);
pub fn arb_mat_ones(mat: *mut arb_mat_struct);
pub fn arb_mat_indeterminate(mat: *mut arb_mat_struct);
pub fn arb_mat_hilbert(mat: *mut arb_mat_struct, prec: slong);
pub fn arb_mat_pascal(mat: *mut arb_mat_struct, triangular: libc::c_int, prec: slong);
pub fn arb_mat_stirling(mat: *mut arb_mat_struct, kind: libc::c_int, prec: slong);
pub fn arb_mat_dct(mat: *mut arb_mat_struct, type_: libc::c_int, prec: slong);
pub fn arb_mat_transpose(mat1: *mut arb_mat_struct, mat2: *const arb_mat_struct);
pub fn arb_mat_bound_inf_norm(b: *mut mag_struct, A: *const arb_mat_struct);
pub fn arb_mat_frobenius_norm(res: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
pub fn arb_mat_bound_frobenius_norm(b: *mut mag_struct, A: *const arb_mat_struct);
pub fn arb_mat_neg(dest: *mut arb_mat_struct, src: *const arb_mat_struct);
pub fn arb_mat_add(
res: *mut arb_mat_struct,
mat1: *const arb_mat_struct,
mat2: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_sub(
res: *mut arb_mat_struct,
mat1: *const arb_mat_struct,
mat2: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_mul(
res: *mut arb_mat_struct,
mat1: *const arb_mat_struct,
mat2: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_mul_classical(
C: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_mul_threaded(
C: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn _arb_mat_addmul_rad_mag_fast(
C: *mut arb_mat_struct,
A: mag_srcptr,
B: mag_srcptr,
ar: slong,
ac: slong,
bc: slong,
);
pub fn arb_mat_mul_block(
C: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_mul_entrywise(
res: *mut arb_mat_struct,
mat1: *const arb_mat_struct,
mat2: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_sqr_classical(B: *mut arb_mat_struct, A: *const arb_mat_struct, prec: slong);
pub fn arb_mat_sqr(B: *mut arb_mat_struct, A: *const arb_mat_struct, prec: slong);
pub fn arb_mat_pow_ui(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
exp: ulong,
prec: slong,
);
pub fn arb_mat_scalar_mul_2exp_si(B: *mut arb_mat_struct, A: *const arb_mat_struct, c: slong);
pub fn arb_mat_scalar_mul_si(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: slong,
prec: slong,
);
pub fn arb_mat_scalar_mul_fmpz(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: *const fmpz,
prec: slong,
);
pub fn arb_mat_scalar_mul_arb(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: *const arb_struct,
prec: slong,
);
pub fn arb_mat_scalar_addmul_si(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: slong,
prec: slong,
);
pub fn arb_mat_scalar_addmul_fmpz(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: *const fmpz,
prec: slong,
);
pub fn arb_mat_scalar_addmul_arb(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: *const arb_struct,
prec: slong,
);
pub fn arb_mat_scalar_div_si(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: slong,
prec: slong,
);
pub fn arb_mat_scalar_div_fmpz(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: *const fmpz,
prec: slong,
);
pub fn arb_mat_scalar_div_arb(
B: *mut arb_mat_struct,
A: *const arb_mat_struct,
c: *const arb_struct,
prec: slong,
);
pub fn _arb_mat_vector_mul_row(
res: arb_ptr,
v: arb_srcptr,
A: *const arb_mat_struct,
prec: slong,
);
pub fn _arb_mat_vector_mul_col(
res: arb_ptr,
A: *const arb_mat_struct,
v: arb_srcptr,
prec: slong,
);
pub fn arb_mat_vector_mul_row(
res: arb_ptr,
v: arb_srcptr,
A: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_vector_mul_col(
res: arb_ptr,
A: *const arb_mat_struct,
v: arb_srcptr,
prec: slong,
);
pub fn arb_mat_swap_rows(mat: *mut arb_mat_struct, perm: *mut slong, r: slong, s: slong);
pub fn arb_mat_find_pivot_partial(
mat: *const arb_mat_struct,
start_row: slong,
end_row: slong,
c: slong,
) -> slong;
pub fn arb_mat_solve_tril_classical(
X: *mut arb_mat_struct,
L: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_solve_tril_recursive(
X: *mut arb_mat_struct,
L: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_solve_tril(
X: *mut arb_mat_struct,
L: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_solve_triu_classical(
X: *mut arb_mat_struct,
U: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_solve_triu_recursive(
X: *mut arb_mat_struct,
U: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_solve_triu(
X: *mut arb_mat_struct,
U: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_lu_classical(
P: *mut slong,
LU: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_lu_recursive(
P: *mut slong,
LU: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_lu(
P: *mut slong,
LU: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_solve_lu_precomp(
X: *mut arb_mat_struct,
perm: *const slong,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_solve(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_solve_lu(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_solve_precond(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_solve_preapprox(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
R: *const arb_mat_struct,
T: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_approx_mul(
C: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_approx_solve_triu(
X: *mut arb_mat_struct,
U: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_approx_solve_tril(
X: *mut arb_mat_struct,
L: *const arb_mat_struct,
B: *const arb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn arb_mat_approx_lu(
P: *mut slong,
LU: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_approx_solve_lu_precomp(
X: *mut arb_mat_struct,
perm: *const slong,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_approx_solve(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_approx_inv(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_inv(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_det_lu(det: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
pub fn arb_mat_det_precond(det: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
pub fn arb_mat_det(det: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
pub fn _arb_mat_cholesky_banachiewicz(A: *mut arb_mat_struct, prec: slong) -> libc::c_int;
pub fn arb_mat_cho(
L: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_solve_cho_precomp(
X: *mut arb_mat_struct,
L: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_inv_cho_precomp(X: *mut arb_mat_struct, L: *const arb_mat_struct, prec: slong);
pub fn arb_mat_spd_solve(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_spd_inv(
X: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn _arb_mat_ldl_inplace(A: *mut arb_mat_struct, prec: slong) -> libc::c_int;
pub fn _arb_mat_ldl_golub_and_van_loan(A: *mut arb_mat_struct, prec: slong) -> libc::c_int;
pub fn arb_mat_ldl(
L: *mut arb_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_solve_ldl_precomp(
X: *mut arb_mat_struct,
L: *const arb_mat_struct,
B: *const arb_mat_struct,
prec: slong,
);
pub fn arb_mat_inv_ldl_precomp(X: *mut arb_mat_struct, L: *const arb_mat_struct, prec: slong);
pub fn arb_mat_exp_taylor_sum(
S: *mut arb_mat_struct,
A: *const arb_mat_struct,
N: slong,
prec: slong,
);
pub fn arb_mat_exp(B: *mut arb_mat_struct, A: *const arb_mat_struct, prec: slong);
pub fn _arb_mat_charpoly(poly: arb_ptr, mat: *const arb_mat_struct, prec: slong);
pub fn arb_mat_charpoly(poly: *mut arb_poly_struct, mat: *const arb_mat_struct, prec: slong);
pub fn _arb_mat_companion(mat: *mut arb_mat_struct, poly: arb_srcptr, prec: slong);
pub fn arb_mat_companion(mat: *mut arb_mat_struct, poly: *const arb_poly_struct, prec: slong);
pub fn arb_mat_trace(trace: *mut arb_struct, mat: *const arb_mat_struct, prec: slong);
pub fn _arb_mat_diag_prod(
res: *mut arb_struct,
A: *const arb_mat_struct,
a: slong,
b: slong,
prec: slong,
);
pub fn arb_mat_diag_prod(res: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
pub fn arb_mat_count_is_zero(mat: *const arb_mat_struct) -> slong;
#[link_name = "arb_mat_count_not_is_zero__extern"]
pub fn arb_mat_count_not_is_zero(mat: *const arb_mat_struct) -> slong;
pub fn arb_mat_allocated_bytes(x: *const arb_mat_struct) -> slong;
pub fn arb_mat_spd_get_fmpz_mat(
B: *mut fmpz_mat_struct,
A: *const arb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn arb_mat_spd_lll_reduce(
U: *mut fmpz_mat_struct,
A: *const arb_mat_struct,
delta: f64,
eta: f64,
prec: slong,
);
pub fn arb_mat_spd_is_lll_reduced(
A: *const arb_mat_struct,
delta: f64,
eta: f64,
prec: slong,
) -> libc::c_int;
}