use crate::deps::*;
use crate::flint::*;
#[repr(C)]
pub struct d_mat_struct {
pub entries: *mut f64,
pub r: slong,
pub c: slong,
pub rows: *mut *mut f64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of d_mat_struct"][::std::mem::size_of::<d_mat_struct>() - 32usize];
["Alignment of d_mat_struct"][::std::mem::align_of::<d_mat_struct>() - 8usize];
["Offset of field: d_mat_struct::entries"]
[::std::mem::offset_of!(d_mat_struct, entries) - 0usize];
["Offset of field: d_mat_struct::r"][::std::mem::offset_of!(d_mat_struct, r) - 8usize];
["Offset of field: d_mat_struct::c"][::std::mem::offset_of!(d_mat_struct, c) - 16usize];
["Offset of field: d_mat_struct::rows"][::std::mem::offset_of!(d_mat_struct, rows) - 24usize];
};
impl Default for d_mat_struct {
fn default() -> Self {
let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
unsafe {
::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type d_mat_t = [d_mat_struct; 1usize];
extern "C" {
#[link_name = "d_mat_nrows__extern"]
pub fn d_mat_nrows(mat: *const d_mat_struct) -> slong;
#[link_name = "d_mat_ncols__extern"]
pub fn d_mat_ncols(mat: *const d_mat_struct) -> slong;
pub fn d_mat_init(mat: *mut d_mat_struct, rows: slong, cols: slong);
#[link_name = "d_mat_swap_entrywise__extern"]
pub fn d_mat_swap_entrywise(mat1: *mut d_mat_struct, mat2: *mut d_mat_struct);
pub fn d_mat_set(mat1: *mut d_mat_struct, mat2: *const d_mat_struct);
pub fn d_mat_clear(mat: *mut d_mat_struct);
pub fn d_mat_equal(mat1: *const d_mat_struct, mat2: *const d_mat_struct) -> libc::c_int;
pub fn d_mat_approx_equal(
mat1: *const d_mat_struct,
mat2: *const d_mat_struct,
eps: f64,
) -> libc::c_int;
#[link_name = "d_mat_is_square__extern"]
pub fn d_mat_is_square(mat: *const d_mat_struct) -> libc::c_int;
pub fn d_mat_zero(mat: *mut d_mat_struct);
pub fn d_mat_print(mat: *const d_mat_struct);
pub fn d_mat_randtest(
mat: *mut d_mat_struct,
state: *mut flint_rand_struct,
minexp: slong,
maxexp: slong,
);
pub fn d_mat_transpose(B: *mut d_mat_struct, A: *const d_mat_struct);
pub fn d_mat_mul_classical(
C: *mut d_mat_struct,
A: *const d_mat_struct,
B: *const d_mat_struct,
);
}