use libc::*;
use crate::deps::*;
use crate::acb_types::*;
use crate::arb_types::*;
use crate::flint::*;
use crate::fmpq_types::*;
use crate::fmpz_types::*;
extern "C" {
#[link_name = "acb_mat_entry_ptr__extern"]
pub fn acb_mat_entry_ptr(mat: *mut acb_mat_struct, i: slong, j: slong) -> acb_ptr;
pub fn acb_mat_init(mat: *mut acb_mat_struct, r: slong, c: slong);
pub fn acb_mat_clear(mat: *mut acb_mat_struct);
#[link_name = "acb_mat_swap__extern"]
pub fn acb_mat_swap(mat1: *mut acb_mat_struct, mat2: *mut acb_mat_struct);
pub fn acb_mat_swap_entrywise(mat1: *mut acb_mat_struct, mat2: *mut acb_mat_struct);
pub fn acb_mat_window_init(
window: *mut acb_mat_struct,
mat: *const acb_mat_struct,
r1: slong,
c1: slong,
r2: slong,
c2: slong,
);
#[link_name = "acb_mat_window_clear__extern"]
pub fn acb_mat_window_clear(UNUSED_window: *mut acb_mat_struct);
pub fn acb_mat_set(dest: *mut acb_mat_struct, src: *const acb_mat_struct);
pub fn acb_mat_set_fmpz_mat(dest: *mut acb_mat_struct, src: *const fmpz_mat_struct);
pub fn acb_mat_set_round_fmpz_mat(
dest: *mut acb_mat_struct,
src: *const fmpz_mat_struct,
prec: slong,
);
pub fn acb_mat_set_fmpq_mat(
dest: *mut acb_mat_struct,
src: *const fmpq_mat_struct,
prec: slong,
);
pub fn acb_mat_set_arb_mat(dest: *mut acb_mat_struct, src: *const arb_mat_struct);
pub fn acb_mat_set_round_arb_mat(
dest: *mut acb_mat_struct,
src: *const arb_mat_struct,
prec: slong,
);
pub fn acb_mat_get_real(re: *mut arb_mat_struct, mat: *const acb_mat_struct);
pub fn acb_mat_get_imag(im: *mut arb_mat_struct, mat: *const acb_mat_struct);
pub fn acb_mat_set_real_imag(
mat: *mut acb_mat_struct,
re: *const arb_mat_struct,
im: *const arb_mat_struct,
);
pub fn acb_mat_randtest(
mat: *mut acb_mat_struct,
state: *mut flint_rand_struct,
prec: slong,
mag_bits: slong,
);
pub fn acb_mat_randtest_eig(
A: *mut acb_mat_struct,
state: *mut flint_rand_struct,
E: acb_srcptr,
prec: slong,
);
pub fn acb_mat_fprintd(file: *mut FILE, mat: *const acb_mat_struct, digits: slong);
pub fn acb_mat_printd(mat: *const acb_mat_struct, digits: slong);
pub fn acb_mat_eq(mat1: *const acb_mat_struct, mat2: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_ne(mat1: *const acb_mat_struct, mat2: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_equal(mat1: *const acb_mat_struct, mat2: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_overlaps(
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
) -> libc::c_int;
pub fn acb_mat_contains(
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
) -> libc::c_int;
pub fn acb_mat_contains_fmpq_mat(
mat1: *const acb_mat_struct,
mat2: *const fmpq_mat_struct,
) -> libc::c_int;
pub fn acb_mat_contains_fmpz_mat(
mat1: *const acb_mat_struct,
mat2: *const fmpz_mat_struct,
) -> libc::c_int;
pub fn acb_mat_is_real(mat: *const acb_mat_struct) -> libc::c_int;
#[link_name = "acb_mat_is_empty__extern"]
pub fn acb_mat_is_empty(mat: *const acb_mat_struct) -> libc::c_int;
#[link_name = "acb_mat_is_square__extern"]
pub fn acb_mat_is_square(mat: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_is_exact(mat: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_is_zero(mat: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_is_finite(mat: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_is_triu(mat: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_is_tril(mat: *const acb_mat_struct) -> libc::c_int;
#[link_name = "acb_mat_is_diag__extern"]
pub fn acb_mat_is_diag(mat: *const acb_mat_struct) -> libc::c_int;
pub fn acb_mat_get_mid(B: *mut acb_mat_struct, A: *const acb_mat_struct);
pub fn acb_mat_add_error_mag(mat: *mut acb_mat_struct, err: *const mag_struct);
pub fn acb_mat_zero(mat: *mut acb_mat_struct);
pub fn acb_mat_one(mat: *mut acb_mat_struct);
pub fn acb_mat_ones(mat: *mut acb_mat_struct);
pub fn acb_mat_onei(mat: *mut acb_mat_struct);
pub fn acb_mat_indeterminate(mat: *mut acb_mat_struct);
pub fn acb_mat_dft(res: *mut acb_mat_struct, kind: libc::c_int, prec: slong);
pub fn acb_mat_transpose(mat1: *mut acb_mat_struct, mat2: *const acb_mat_struct);
pub fn acb_mat_conjugate(mat1: *mut acb_mat_struct, mat2: *const acb_mat_struct);
#[link_name = "acb_mat_conjugate_transpose__extern"]
pub fn acb_mat_conjugate_transpose(mat1: *mut acb_mat_struct, mat2: *const acb_mat_struct);
pub fn acb_mat_bound_inf_norm(b: *mut mag_struct, A: *const acb_mat_struct);
pub fn acb_mat_frobenius_norm(res: *mut arb_struct, A: *const acb_mat_struct, prec: slong);
pub fn acb_mat_bound_frobenius_norm(b: *mut mag_struct, A: *const acb_mat_struct);
pub fn acb_mat_neg(dest: *mut acb_mat_struct, src: *const acb_mat_struct);
pub fn acb_mat_add(
res: *mut acb_mat_struct,
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_sub(
res: *mut acb_mat_struct,
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_mul_classical(
res: *mut acb_mat_struct,
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_mul_threaded(
res: *mut acb_mat_struct,
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_mul_reorder(
res: *mut acb_mat_struct,
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_mul(
res: *mut acb_mat_struct,
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_mul_entrywise(
res: *mut acb_mat_struct,
mat1: *const acb_mat_struct,
mat2: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_sqr_classical(res: *mut acb_mat_struct, mat: *const acb_mat_struct, prec: slong);
pub fn acb_mat_sqr(res: *mut acb_mat_struct, mat: *const acb_mat_struct, prec: slong);
pub fn acb_mat_pow_ui(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
exp: ulong,
prec: slong,
);
pub fn acb_mat_scalar_mul_2exp_si(B: *mut acb_mat_struct, A: *const acb_mat_struct, c: slong);
pub fn acb_mat_scalar_mul_si(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: slong,
prec: slong,
);
pub fn acb_mat_scalar_mul_fmpz(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const fmpz,
prec: slong,
);
pub fn acb_mat_scalar_mul_arb(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const arb_struct,
prec: slong,
);
pub fn acb_mat_scalar_mul_acb(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const acb_struct,
prec: slong,
);
pub fn acb_mat_scalar_addmul_si(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: slong,
prec: slong,
);
pub fn acb_mat_scalar_addmul_fmpz(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const fmpz,
prec: slong,
);
pub fn acb_mat_scalar_addmul_arb(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const arb_struct,
prec: slong,
);
pub fn acb_mat_scalar_addmul_acb(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const acb_struct,
prec: slong,
);
pub fn acb_mat_scalar_div_si(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: slong,
prec: slong,
);
pub fn acb_mat_scalar_div_fmpz(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const fmpz,
prec: slong,
);
pub fn acb_mat_scalar_div_arb(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const arb_struct,
prec: slong,
);
pub fn acb_mat_scalar_div_acb(
B: *mut acb_mat_struct,
A: *const acb_mat_struct,
c: *const acb_struct,
prec: slong,
);
pub fn _acb_mat_vector_mul_row(
res: acb_ptr,
v: acb_srcptr,
A: *const acb_mat_struct,
prec: slong,
);
pub fn _acb_mat_vector_mul_col(
res: acb_ptr,
A: *const acb_mat_struct,
v: acb_srcptr,
prec: slong,
);
pub fn acb_mat_vector_mul_row(
res: acb_ptr,
v: acb_srcptr,
A: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_vector_mul_col(
res: acb_ptr,
A: *const acb_mat_struct,
v: acb_srcptr,
prec: slong,
);
pub fn acb_mat_swap_rows(mat: *mut acb_mat_struct, perm: *mut slong, r: slong, s: slong);
pub fn acb_mat_find_pivot_partial(
mat: *const acb_mat_struct,
start_row: slong,
end_row: slong,
c: slong,
) -> slong;
pub fn acb_mat_solve_tril_classical(
X: *mut acb_mat_struct,
L: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_solve_tril_recursive(
X: *mut acb_mat_struct,
L: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_solve_tril(
X: *mut acb_mat_struct,
L: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_solve_triu_classical(
X: *mut acb_mat_struct,
U: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_solve_triu_recursive(
X: *mut acb_mat_struct,
U: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_solve_triu(
X: *mut acb_mat_struct,
U: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_lu_classical(
P: *mut slong,
LU: *mut acb_mat_struct,
A: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_lu_recursive(
P: *mut slong,
LU: *mut acb_mat_struct,
A: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_lu(
P: *mut slong,
LU: *mut acb_mat_struct,
A: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_solve_lu_precomp(
X: *mut acb_mat_struct,
perm: *const slong,
A: *const acb_mat_struct,
B: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_solve_lu(
X: *mut acb_mat_struct,
A: *const acb_mat_struct,
B: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_solve(
X: *mut acb_mat_struct,
A: *const acb_mat_struct,
B: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_solve_precond(
X: *mut acb_mat_struct,
A: *const acb_mat_struct,
B: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_approx_mul(
C: *mut acb_mat_struct,
A: *const acb_mat_struct,
B: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_approx_solve_triu(
X: *mut acb_mat_struct,
U: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_approx_solve_tril(
X: *mut acb_mat_struct,
L: *const acb_mat_struct,
B: *const acb_mat_struct,
unit: libc::c_int,
prec: slong,
);
pub fn acb_mat_approx_lu(
P: *mut slong,
LU: *mut acb_mat_struct,
A: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_approx_solve_lu_precomp(
X: *mut acb_mat_struct,
perm: *const slong,
A: *const acb_mat_struct,
B: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_approx_solve(
X: *mut acb_mat_struct,
A: *const acb_mat_struct,
B: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_approx_inv(
X: *mut acb_mat_struct,
A: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_inv(
X: *mut acb_mat_struct,
A: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_det_lu(det: *mut acb_struct, A: *const acb_mat_struct, prec: slong);
pub fn acb_mat_det_precond(det: *mut acb_struct, A: *const acb_mat_struct, prec: slong);
pub fn acb_mat_det(det: *mut acb_struct, A: *const acb_mat_struct, prec: slong);
pub fn acb_mat_approx_eig_qr(
E: acb_ptr,
L: *mut acb_mat_struct,
R: *mut acb_mat_struct,
A: *const acb_mat_struct,
tol: *const mag_struct,
maxiter: slong,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_eig_global_enclosure(
eps: *mut mag_struct,
A: *const acb_mat_struct,
E: acb_srcptr,
R: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_eig_enclosure_rump(
lambda: *mut acb_struct,
J: *mut acb_mat_struct,
X: *mut acb_mat_struct,
A: *const acb_mat_struct,
lambda_approx: *const acb_struct,
X_approx: *const acb_mat_struct,
prec: slong,
);
pub fn acb_mat_eig_simple_rump(
E: acb_ptr,
L: *mut acb_mat_struct,
R: *mut acb_mat_struct,
A: *const acb_mat_struct,
E_approx: acb_srcptr,
R_approx: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_eig_simple_vdhoeven_mourrain(
E: acb_ptr,
L: *mut acb_mat_struct,
R: *mut acb_mat_struct,
A: *const acb_mat_struct,
E_approx: acb_srcptr,
R_approx: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_eig_simple(
E: acb_ptr,
L: *mut acb_mat_struct,
R: *mut acb_mat_struct,
A: *const acb_mat_struct,
E_approx: acb_srcptr,
R_approx: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_eig_multiple_rump(
E: acb_ptr,
A: *const acb_mat_struct,
E_approx: acb_srcptr,
R_approx: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_eig_multiple(
E: acb_ptr,
A: *const acb_mat_struct,
E_approx: acb_srcptr,
R_approx: *const acb_mat_struct,
prec: slong,
) -> libc::c_int;
pub fn acb_mat_exp_taylor_sum(
S: *mut acb_mat_struct,
A: *const acb_mat_struct,
N: slong,
prec: slong,
);
pub fn acb_mat_exp(B: *mut acb_mat_struct, A: *const acb_mat_struct, prec: slong);
pub fn _acb_mat_charpoly(poly: acb_ptr, mat: *const acb_mat_struct, prec: slong);
pub fn acb_mat_charpoly(poly: *mut acb_poly_struct, mat: *const acb_mat_struct, prec: slong);
pub fn _acb_mat_companion(mat: *mut acb_mat_struct, poly: acb_srcptr, prec: slong);
pub fn acb_mat_companion(mat: *mut acb_mat_struct, poly: *const acb_poly_struct, prec: slong);
pub fn acb_mat_trace(trace: *mut acb_struct, mat: *const acb_mat_struct, prec: slong);
pub fn _acb_mat_diag_prod(
res: *mut acb_struct,
A: *const acb_mat_struct,
a: slong,
b: slong,
prec: slong,
);
pub fn acb_mat_diag_prod(res: *mut acb_struct, A: *const acb_mat_struct, prec: slong);
pub fn acb_mat_allocated_bytes(x: *const acb_mat_struct) -> slong;
}