#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage> {
storage: Storage,
}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
Self { storage }
}
}
impl<Storage> __BindgenBitfieldUnit<Storage>
where
Storage: AsRef<[u8]> + AsMut<[u8]>,
{
#[inline]
fn extract_bit(byte: u8, index: usize) -> bool {
let bit_index = if cfg!(target_endian = "big") {
7 - (index % 8)
} else {
index % 8
};
let mask = 1 << bit_index;
byte & mask == mask
}
#[inline]
pub fn get_bit(&self, index: usize) -> bool {
debug_assert!(index / 8 < self.storage.as_ref().len());
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
Self::extract_bit(byte, index)
}
#[inline]
pub unsafe fn raw_get_bit(this: *const Self, index: usize) -> bool {
debug_assert!(index / 8 < core::mem::size_of::<Storage>());
let byte_index = index / 8;
let byte = *(core::ptr::addr_of!((*this).storage) as *const u8).offset(byte_index as isize);
Self::extract_bit(byte, index)
}
#[inline]
fn change_bit(byte: u8, index: usize, val: bool) -> u8 {
let bit_index = if cfg!(target_endian = "big") {
7 - (index % 8)
} else {
index % 8
};
let mask = 1 << bit_index;
if val {
byte | mask
} else {
byte & !mask
}
}
#[inline]
pub fn set_bit(&mut self, index: usize, val: bool) {
debug_assert!(index / 8 < self.storage.as_ref().len());
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
*byte = Self::change_bit(*byte, index, val);
}
#[inline]
pub unsafe fn raw_set_bit(this: *mut Self, index: usize, val: bool) {
debug_assert!(index / 8 < core::mem::size_of::<Storage>());
let byte_index = index / 8;
let byte =
(core::ptr::addr_of_mut!((*this).storage) as *mut u8).offset(byte_index as isize);
*byte = Self::change_bit(*byte, index, val);
}
#[inline]
pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
let mut val = 0;
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
val |= 1 << index;
}
}
val
}
#[inline]
pub unsafe fn raw_get(this: *const Self, bit_offset: usize, bit_width: u8) -> u64 {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
let mut val = 0;
for i in 0..(bit_width as usize) {
if Self::raw_get_bit(this, i + bit_offset) {
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
val |= 1 << index;
}
}
val
}
#[inline]
pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
self.set_bit(index + bit_offset, val_bit_is_set);
}
}
#[inline]
pub unsafe fn raw_set(this: *mut Self, bit_offset: usize, bit_width: u8, val: u64) {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
Self::raw_set_bit(this, index + bit_offset, val_bit_is_set);
}
}
}
#[derive(PartialEq, Copy, Clone, Hash, Debug, Default)]
#[repr(C)]
pub struct __BindgenComplex<T> {
pub re: T,
pub im: T,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sparse_m_double {
_unused: [u8; 0],
}
pub type sparse_matrix_double = *mut sparse_m_double;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sparse_m_float_complex {
_unused: [u8; 0],
}
pub type sparse_matrix_float_complex = *mut sparse_m_float_complex;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sparse_m_double_complex {
_unused: [u8; 0],
}
pub type sparse_matrix_double_complex = *mut sparse_m_double_complex;
pub const sparse_norm_SPARSE_NORM_ONE: sparse_norm = 171;
pub const sparse_norm_SPARSE_NORM_TWO: sparse_norm = 173;
pub const sparse_norm_SPARSE_NORM_INF: sparse_norm = 175;
pub const sparse_norm_SPARSE_NORM_R1: sparse_norm = 179;
pub type sparse_norm = ::core::ffi::c_uint;
pub const CBLAS_ORDER_CblasRowMajor: CBLAS_ORDER = 101;
pub const CBLAS_ORDER_CblasColMajor: CBLAS_ORDER = 102;
pub type CBLAS_ORDER = ::core::ffi::c_uint;
pub const CBLAS_TRANSPOSE_CblasNoTrans: CBLAS_TRANSPOSE = 111;
pub const CBLAS_TRANSPOSE_CblasTrans: CBLAS_TRANSPOSE = 112;
pub const CBLAS_TRANSPOSE_CblasConjTrans: CBLAS_TRANSPOSE = 113;
pub const CBLAS_TRANSPOSE_AtlasConj: CBLAS_TRANSPOSE = 114;
pub type CBLAS_TRANSPOSE = ::core::ffi::c_uint;
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_inner_product_dense_double(
nz: sparse_dimension,
x: *const f64,
indx: *const sparse_index,
y: *const f64,
incy: sparse_stride,
) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_inner_product_dense_float_complex(
nz: sparse_dimension,
x: *const __BindgenComplex<f32>,
indx: *const sparse_index,
y: *const __BindgenComplex<f32>,
incy: sparse_stride,
) -> __BindgenComplex<f32>;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_inner_product_dense_double_complex(
nz: sparse_dimension,
x: *const __BindgenComplex<f64>,
indx: *const sparse_index,
y: *const __BindgenComplex<f64>,
incy: sparse_stride,
) -> __BindgenComplex<f64>;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_inner_product_sparse_double(
nzx: sparse_dimension,
nzy: sparse_dimension,
x: *const f64,
indx: *const sparse_index,
y: *const f64,
indy: *const sparse_index,
) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_inner_product_sparse_float_complex(
nzx: sparse_dimension,
nzy: sparse_dimension,
x: *const __BindgenComplex<f32>,
indx: *const sparse_index,
y: *const __BindgenComplex<f32>,
indy: *const sparse_index,
) -> __BindgenComplex<f32>;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_inner_product_sparse_double_complex(
nzx: sparse_dimension,
nzy: sparse_dimension,
x: *const __BindgenComplex<f64>,
indx: *const sparse_index,
y: *const __BindgenComplex<f64>,
indy: *const sparse_index,
) -> __BindgenComplex<f64>;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_add_with_scale_dense_double(
nz: sparse_dimension,
alpha: f64,
x: *const f64,
indx: *const sparse_index,
y: *mut f64,
incy: sparse_stride,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_add_with_scale_dense_float_complex(
nz: sparse_dimension,
alpha: __BindgenComplex<f32>,
x: *const __BindgenComplex<f32>,
indx: *const sparse_index,
y: *mut __BindgenComplex<f32>,
incy: sparse_stride,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_add_with_scale_dense_double_complex(
nz: sparse_dimension,
alpha: __BindgenComplex<f64>,
x: *const __BindgenComplex<f64>,
indx: *const sparse_index,
y: *mut __BindgenComplex<f64>,
incy: sparse_stride,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_norm_float(
nz: sparse_dimension,
x: *const f32,
indx: *const sparse_index,
norm: sparse_norm,
) -> f32;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_norm_double(
nz: sparse_dimension,
x: *const f64,
indx: *const sparse_index,
norm: sparse_norm,
) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_norm_float_complex(
nz: sparse_dimension,
x: *const __BindgenComplex<f32>,
indx: *const sparse_index,
norm: sparse_norm,
) -> f32;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_norm_double_complex(
nz: sparse_dimension,
x: *const __BindgenComplex<f64>,
indx: *const sparse_index,
norm: sparse_norm,
) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_vector_product_dense_float(
transa: CBLAS_TRANSPOSE,
alpha: f32,
A: sparse_matrix_float,
x: *const f32,
incx: sparse_stride,
y: *mut f32,
incy: sparse_stride,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_vector_product_dense_double(
transa: CBLAS_TRANSPOSE,
alpha: f64,
A: sparse_matrix_double,
x: *const f64,
incx: sparse_stride,
y: *mut f64,
incy: sparse_stride,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_vector_product_dense_float_complex(
transa: CBLAS_TRANSPOSE,
alpha: __BindgenComplex<f32>,
A: sparse_matrix_float_complex,
x: *const __BindgenComplex<f32>,
incx: sparse_stride,
y: *mut __BindgenComplex<f32>,
incy: sparse_stride,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_vector_product_dense_double_complex(
transa: CBLAS_TRANSPOSE,
alpha: __BindgenComplex<f64>,
A: sparse_matrix_double_complex,
x: *const __BindgenComplex<f64>,
incx: sparse_stride,
y: *mut __BindgenComplex<f64>,
incy: sparse_stride,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_triangular_solve_dense_double(
transt: CBLAS_TRANSPOSE,
alpha: f64,
T: sparse_matrix_double,
x: *mut f64,
incx: sparse_stride,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_triangular_solve_dense_float_complex(
transt: CBLAS_TRANSPOSE,
alpha: __BindgenComplex<f32>,
T: sparse_matrix_float_complex,
x: *mut __BindgenComplex<f32>,
incx: sparse_stride,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_vector_triangular_solve_dense_double_complex(
transt: CBLAS_TRANSPOSE,
alpha: __BindgenComplex<f64>,
T: sparse_matrix_double_complex,
x: *mut __BindgenComplex<f64>,
incx: sparse_stride,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_outer_product_dense_float(
M: sparse_dimension,
N: sparse_dimension,
nz: sparse_dimension,
alpha: f32,
x: *const f32,
incx: sparse_stride,
y: *const f32,
indy: *const sparse_index,
C: *mut sparse_matrix_float,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_outer_product_dense_double(
M: sparse_dimension,
N: sparse_dimension,
nz: sparse_dimension,
alpha: f64,
x: *const f64,
incx: sparse_stride,
y: *const f64,
indy: *const sparse_index,
C: *mut sparse_matrix_double,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_outer_product_dense_float_complex(
M: sparse_dimension,
N: sparse_dimension,
nz: sparse_dimension,
alpha: __BindgenComplex<f32>,
x: *const __BindgenComplex<f32>,
incx: sparse_stride,
y: *const __BindgenComplex<f32>,
indy: *const sparse_index,
C: *mut sparse_matrix_float_complex,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_outer_product_dense_double_complex(
M: sparse_dimension,
N: sparse_dimension,
nz: sparse_dimension,
alpha: __BindgenComplex<f64>,
x: *const __BindgenComplex<f64>,
incx: sparse_stride,
y: *const __BindgenComplex<f64>,
indy: *const sparse_index,
C: *mut sparse_matrix_double_complex,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_rows_float(
A: sparse_matrix_float,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_rows_double(
A: sparse_matrix_double,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_rows_float_complex(
A: sparse_matrix_float_complex,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_rows_double_complex(
A: sparse_matrix_double_complex,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_cols_float(
A: sparse_matrix_float,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_cols_double(
A: sparse_matrix_double,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_cols_float_complex(
A: sparse_matrix_float_complex,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_permute_cols_double_complex(
A: sparse_matrix_double_complex,
perm: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_elementwise_norm_float(A: sparse_matrix_float, norm: sparse_norm) -> f32;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_elementwise_norm_double(A: sparse_matrix_double, norm: sparse_norm) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_elementwise_norm_float_complex(
A: sparse_matrix_float_complex,
norm: sparse_norm,
) -> f32;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_elementwise_norm_double_complex(
A: sparse_matrix_double_complex,
norm: sparse_norm,
) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_operator_norm_float(A: sparse_matrix_float, norm: sparse_norm) -> f32;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_operator_norm_double(A: sparse_matrix_double, norm: sparse_norm) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_operator_norm_float_complex(
A: sparse_matrix_float_complex,
norm: sparse_norm,
) -> f32;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_operator_norm_double_complex(
A: sparse_matrix_double_complex,
norm: sparse_norm,
) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_trace_float(A: sparse_matrix_float, offset: sparse_index) -> f32;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_trace_double(A: sparse_matrix_double, offset: sparse_index) -> f64;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_trace_float_complex(
A: sparse_matrix_float_complex,
offset: sparse_index,
) -> __BindgenComplex<f32>;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_trace_double_complex(
A: sparse_matrix_double_complex,
offset: sparse_index,
) -> __BindgenComplex<f64>;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_dense_float(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
n: sparse_dimension,
alpha: f32,
A: sparse_matrix_float,
B: *const f32,
ldb: sparse_dimension,
C: *mut f32,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_dense_double(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
n: sparse_dimension,
alpha: f64,
A: sparse_matrix_double,
B: *const f64,
ldb: sparse_dimension,
C: *mut f64,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_dense_float_complex(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
n: sparse_dimension,
alpha: __BindgenComplex<f32>,
A: sparse_matrix_float_complex,
B: *const __BindgenComplex<f32>,
ldb: sparse_dimension,
C: *mut __BindgenComplex<f32>,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_dense_double_complex(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
n: sparse_dimension,
alpha: __BindgenComplex<f64>,
A: sparse_matrix_double_complex,
B: *const __BindgenComplex<f64>,
ldb: sparse_dimension,
C: *mut __BindgenComplex<f64>,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_sparse_float(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
alpha: f32,
A: sparse_matrix_float,
B: sparse_matrix_float,
C: *mut f32,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_sparse_double(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
alpha: f64,
A: sparse_matrix_double,
B: sparse_matrix_double,
C: *mut f64,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_sparse_float_complex(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
alpha: __BindgenComplex<f32>,
A: sparse_matrix_float_complex,
B: sparse_matrix_float_complex,
C: *mut __BindgenComplex<f32>,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_product_sparse_double_complex(
order: CBLAS_ORDER,
transa: CBLAS_TRANSPOSE,
alpha: __BindgenComplex<f64>,
A: sparse_matrix_double_complex,
B: sparse_matrix_double_complex,
C: *mut __BindgenComplex<f64>,
ldc: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_triangular_solve_dense_double(
order: CBLAS_ORDER,
transt: CBLAS_TRANSPOSE,
nrhs: sparse_dimension,
alpha: f64,
T: sparse_matrix_double,
B: *mut f64,
ldb: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_triangular_solve_dense_float_complex(
order: CBLAS_ORDER,
transt: CBLAS_TRANSPOSE,
nrhs: sparse_dimension,
alpha: __BindgenComplex<f32>,
T: sparse_matrix_float_complex,
B: *mut __BindgenComplex<f32>,
ldb: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_triangular_solve_dense_double_complex(
order: CBLAS_ORDER,
transt: CBLAS_TRANSPOSE,
nrhs: sparse_dimension,
alpha: __BindgenComplex<f64>,
T: sparse_matrix_double_complex,
B: *mut __BindgenComplex<f64>,
ldb: sparse_dimension,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_create_double(
M: sparse_dimension,
N: sparse_dimension,
) -> sparse_matrix_double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_create_float_complex(
M: sparse_dimension,
N: sparse_dimension,
) -> sparse_matrix_float_complex;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_create_double_complex(
M: sparse_dimension,
N: sparse_dimension,
) -> sparse_matrix_double_complex;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_entry_double(
A: sparse_matrix_double,
val: f64,
i: sparse_index,
j: sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_entry_float_complex(
A: sparse_matrix_float_complex,
val: __BindgenComplex<f32>,
i: sparse_index,
j: sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_entry_double_complex(
A: sparse_matrix_double_complex,
val: __BindgenComplex<f64>,
i: sparse_index,
j: sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_entries_float(
A: sparse_matrix_float,
N: sparse_dimension,
val: *const f32,
indx: *const sparse_index,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_entries_double(
A: sparse_matrix_double,
N: sparse_dimension,
val: *const f64,
indx: *const sparse_index,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_entries_float_complex(
A: sparse_matrix_float_complex,
N: sparse_dimension,
val: *const __BindgenComplex<f32>,
indx: *const sparse_index,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_entries_double_complex(
A: sparse_matrix_double_complex,
N: sparse_dimension,
val: *const __BindgenComplex<f64>,
indx: *const sparse_index,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_col_float(
A: sparse_matrix_float,
j: sparse_index,
nz: sparse_dimension,
val: *const f32,
indx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_col_double(
A: sparse_matrix_double,
j: sparse_index,
nz: sparse_dimension,
val: *const f64,
indx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_col_float_complex(
A: sparse_matrix_float_complex,
j: sparse_index,
nz: sparse_dimension,
val: *const __BindgenComplex<f32>,
indx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_col_double_complex(
A: sparse_matrix_double_complex,
j: sparse_index,
nz: sparse_dimension,
val: *const __BindgenComplex<f64>,
indx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_row_float(
A: sparse_matrix_float,
i: sparse_index,
nz: sparse_dimension,
val: *const f32,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_row_double(
A: sparse_matrix_double,
i: sparse_index,
nz: sparse_dimension,
val: *const f64,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_row_float_complex(
A: sparse_matrix_float_complex,
i: sparse_index,
nz: sparse_dimension,
val: *const __BindgenComplex<f32>,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_row_double_complex(
A: sparse_matrix_double_complex,
i: sparse_index,
nz: sparse_dimension,
val: *const __BindgenComplex<f64>,
jndx: *const sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_row_float(
A: sparse_matrix_float,
row: sparse_index,
column_start: sparse_index,
column_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut f32,
jndx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_row_double(
A: sparse_matrix_double,
row: sparse_index,
column_start: sparse_index,
column_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut f64,
jndx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_row_float_complex(
A: sparse_matrix_float_complex,
row: sparse_index,
column_start: sparse_index,
column_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut __BindgenComplex<f32>,
jndx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_row_double_complex(
A: sparse_matrix_double_complex,
row: sparse_index,
column_start: sparse_index,
column_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut __BindgenComplex<f64>,
jndx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_column_float(
A: sparse_matrix_float,
column: sparse_index,
row_start: sparse_index,
row_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut f32,
indx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_column_double(
A: sparse_matrix_double,
column: sparse_index,
row_start: sparse_index,
row_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut f64,
indx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_column_float_complex(
A: sparse_matrix_float_complex,
column: sparse_index,
row_start: sparse_index,
row_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut __BindgenComplex<f32>,
indx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_sparse_column_double_complex(
A: sparse_matrix_double_complex,
column: sparse_index,
row_start: sparse_index,
row_end: *mut sparse_index,
nz: sparse_dimension,
val: *mut __BindgenComplex<f64>,
indx: *mut sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_block_create_float(
Mb: sparse_dimension,
Nb: sparse_dimension,
k: sparse_dimension,
l: sparse_dimension,
) -> sparse_matrix_float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_block_create_double(
Mb: sparse_dimension,
Nb: sparse_dimension,
k: sparse_dimension,
l: sparse_dimension,
) -> sparse_matrix_double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_block_create_float_complex(
Mb: sparse_dimension,
Nb: sparse_dimension,
k: sparse_dimension,
l: sparse_dimension,
) -> sparse_matrix_float_complex;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_block_create_double_complex(
Mb: sparse_dimension,
Nb: sparse_dimension,
k: sparse_dimension,
l: sparse_dimension,
) -> sparse_matrix_double_complex;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_variable_block_create_float(
Mb: sparse_dimension,
Nb: sparse_dimension,
K: *const sparse_dimension,
L: *const sparse_dimension,
) -> sparse_matrix_float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_variable_block_create_double(
Mb: sparse_dimension,
Nb: sparse_dimension,
K: *const sparse_dimension,
L: *const sparse_dimension,
) -> sparse_matrix_double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_variable_block_create_float_complex(
Mb: sparse_dimension,
Nb: sparse_dimension,
K: *const sparse_dimension,
L: *const sparse_dimension,
) -> sparse_matrix_float_complex;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_matrix_variable_block_create_double_complex(
Mb: sparse_dimension,
Nb: sparse_dimension,
K: *const sparse_dimension,
L: *const sparse_dimension,
) -> sparse_matrix_double_complex;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_block_float(
A: sparse_matrix_float,
val: *const f32,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
bi: sparse_index,
bj: sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_block_double(
A: sparse_matrix_double,
val: *const f64,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
bi: sparse_index,
bj: sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_block_float_complex(
A: sparse_matrix_float_complex,
val: *const __BindgenComplex<f32>,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
bi: sparse_index,
bj: sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_insert_block_double_complex(
A: sparse_matrix_double_complex,
val: *const __BindgenComplex<f64>,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
bi: sparse_index,
bj: sparse_index,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_block_float(
A: sparse_matrix_float,
bi: sparse_index,
bj: sparse_index,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
val: *mut f32,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_block_double(
A: sparse_matrix_double,
bi: sparse_index,
bj: sparse_index,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
val: *mut f64,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_block_float_complex(
A: sparse_matrix_float_complex,
bi: sparse_index,
bj: sparse_index,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
val: *mut __BindgenComplex<f32>,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_extract_block_double_complex(
A: sparse_matrix_double_complex,
bi: sparse_index,
bj: sparse_index,
row_stride: sparse_dimension,
col_stride: sparse_dimension,
val: *mut __BindgenComplex<f64>,
) -> sparse_status;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_block_dimension_for_row(
A: *mut ::core::ffi::c_void,
i: sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_block_dimension_for_col(
A: *mut ::core::ffi::c_void,
j: sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_matrix_property(
A: *mut ::core::ffi::c_void,
pname: sparse_matrix_property,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_matrix_nonzero_count_for_row(
A: *mut ::core::ffi::c_void,
i: sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_matrix_nonzero_count_for_column(
A: *mut ::core::ffi::c_void,
j: sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_vector_nonzero_count_float(
N: sparse_dimension,
x: *const f32,
incx: sparse_stride,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_vector_nonzero_count_double(
N: sparse_dimension,
x: *const f64,
incx: sparse_stride,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_vector_nonzero_count_float_complex(
N: sparse_dimension,
x: *const __BindgenComplex<f32>,
incx: sparse_stride,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_get_vector_nonzero_count_double_complex(
N: sparse_dimension,
x: *const __BindgenComplex<f64>,
incx: sparse_stride,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_pack_vector_float(
N: sparse_dimension,
nz: sparse_dimension,
x: *const f32,
incx: sparse_stride,
y: *mut f32,
indy: *mut sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_pack_vector_double(
N: sparse_dimension,
nz: sparse_dimension,
x: *const f64,
incx: sparse_stride,
y: *mut f64,
indy: *mut sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_pack_vector_float_complex(
N: sparse_dimension,
nz: sparse_dimension,
x: *const __BindgenComplex<f32>,
incx: sparse_stride,
y: *mut __BindgenComplex<f32>,
indy: *mut sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_pack_vector_double_complex(
N: sparse_dimension,
nz: sparse_dimension,
x: *const __BindgenComplex<f64>,
incx: sparse_stride,
y: *mut __BindgenComplex<f64>,
indy: *mut sparse_index,
) -> ::core::ffi::c_long;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_unpack_vector_float(
N: sparse_dimension,
nz: sparse_dimension,
zero: bool,
x: *const f32,
indx: *const sparse_index,
y: *mut f32,
incy: sparse_stride,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_unpack_vector_double(
N: sparse_dimension,
nz: sparse_dimension,
zero: bool,
x: *const f64,
indx: *const sparse_index,
y: *mut f64,
incy: sparse_stride,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_unpack_vector_float_complex(
N: sparse_dimension,
nz: sparse_dimension,
zero: bool,
x: *const __BindgenComplex<f32>,
indx: *const sparse_index,
y: *mut __BindgenComplex<f32>,
incy: sparse_stride,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn sparse_unpack_vector_double_complex(
N: sparse_dimension,
nz: sparse_dimension,
zero: bool,
x: *const __BindgenComplex<f64>,
indx: *const sparse_index,
y: *mut __BindgenComplex<f64>,
incy: sparse_stride,
);
}
pub type __SPARSE_float_complex = __BindgenComplex<f32>;
pub type __SPARSE_double_complex = __BindgenComplex<f64>;
pub type SparseKind_t = ::core::ffi::c_uint;
pub type SparseTriangle_t = ::core::ffi::c_uchar;
#[repr(C)]
#[repr(align(4))]
#[derive(Debug, Default, Copy, Clone)]
pub struct SparseAttributes_t {
pub _bitfield_align_1: [u16; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
pub __bindgen_padding_0: u16,
}
impl SparseAttributes_t {
#[inline]
pub fn transpose(&self) -> bool {
unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
}
#[inline]
pub fn set_transpose(&mut self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub unsafe fn transpose_raw(this: *const Self) -> bool {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
0usize,
1u8,
) as u8)
}
}
#[inline]
pub unsafe fn set_transpose_raw(this: *mut Self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
0usize,
1u8,
val as u64,
)
}
}
#[inline]
pub fn triangle(&self) -> SparseTriangle_t {
unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
}
#[inline]
pub fn set_triangle(&mut self, val: SparseTriangle_t) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
self._bitfield_1.set(1usize, 1u8, val as u64)
}
}
#[inline]
pub unsafe fn triangle_raw(this: *const Self) -> SparseTriangle_t {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
1usize,
1u8,
) as u8)
}
}
#[inline]
pub unsafe fn set_triangle_raw(this: *mut Self, val: SparseTriangle_t) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
1usize,
1u8,
val as u64,
)
}
}
#[inline]
pub fn kind(&self) -> SparseKind_t {
unsafe { ::core::mem::transmute(self._bitfield_1.get(2usize, 2u8) as u32) }
}
#[inline]
pub fn set_kind(&mut self, val: SparseKind_t) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
self._bitfield_1.set(2usize, 2u8, val as u64)
}
}
#[inline]
pub unsafe fn kind_raw(this: *const Self) -> SparseKind_t {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
2usize,
2u8,
) as u32)
}
}
#[inline]
pub unsafe fn set_kind_raw(this: *mut Self, val: SparseKind_t) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
2usize,
2u8,
val as u64,
)
}
}
#[inline]
pub fn _reserved(&self) -> ::core::ffi::c_uint {
unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 11u8) as u32) }
}
#[inline]
pub fn set__reserved(&mut self, val: ::core::ffi::c_uint) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
self._bitfield_1.set(4usize, 11u8, val as u64)
}
}
#[inline]
pub unsafe fn _reserved_raw(this: *const Self) -> ::core::ffi::c_uint {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
4usize,
11u8,
) as u32)
}
}
#[inline]
pub unsafe fn set__reserved_raw(this: *mut Self, val: ::core::ffi::c_uint) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
4usize,
11u8,
val as u64,
)
}
}
#[inline]
pub fn _allocatedBySparse(&self) -> bool {
unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u8) }
}
#[inline]
pub fn set__allocatedBySparse(&mut self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
self._bitfield_1.set(15usize, 1u8, val as u64)
}
}
#[inline]
pub unsafe fn _allocatedBySparse_raw(this: *const Self) -> bool {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
15usize,
1u8,
) as u8)
}
}
#[inline]
pub unsafe fn set__allocatedBySparse_raw(this: *mut Self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
15usize,
1u8,
val as u64,
)
}
}
#[inline]
pub fn new_bitfield_1(
transpose: bool,
triangle: SparseTriangle_t,
kind: SparseKind_t,
_reserved: ::core::ffi::c_uint,
_allocatedBySparse: bool,
) -> __BindgenBitfieldUnit<[u8; 2usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let transpose: u8 = unsafe { ::core::mem::transmute(transpose) };
transpose as u64
});
__bindgen_bitfield_unit.set(1usize, 1u8, {
let triangle: u8 = unsafe { ::core::mem::transmute(triangle) };
triangle as u64
});
__bindgen_bitfield_unit.set(2usize, 2u8, {
let kind: u32 = unsafe { ::core::mem::transmute(kind) };
kind as u64
});
__bindgen_bitfield_unit.set(4usize, 11u8, {
let _reserved: u32 = unsafe { ::core::mem::transmute(_reserved) };
_reserved as u64
});
__bindgen_bitfield_unit.set(15usize, 1u8, {
let _allocatedBySparse: u8 = unsafe { ::core::mem::transmute(_allocatedBySparse) };
_allocatedBySparse as u64
});
__bindgen_bitfield_unit
}
}
#[repr(C)]
#[repr(align(4))]
#[derive(Debug, Default, Copy, Clone)]
pub struct SparseAttributesComplex_t {
pub _bitfield_align_1: [u16; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
pub __bindgen_padding_0: u16,
}
impl SparseAttributesComplex_t {
#[inline]
pub fn transpose(&self) -> bool {
unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
}
#[inline]
pub fn set_transpose(&mut self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub unsafe fn transpose_raw(this: *const Self) -> bool {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
0usize,
1u8,
) as u8)
}
}
#[inline]
pub unsafe fn set_transpose_raw(this: *mut Self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
0usize,
1u8,
val as u64,
)
}
}
#[inline]
pub fn triangle(&self) -> SparseTriangle_t {
unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
}
#[inline]
pub fn set_triangle(&mut self, val: SparseTriangle_t) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
self._bitfield_1.set(1usize, 1u8, val as u64)
}
}
#[inline]
pub unsafe fn triangle_raw(this: *const Self) -> SparseTriangle_t {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
1usize,
1u8,
) as u8)
}
}
#[inline]
pub unsafe fn set_triangle_raw(this: *mut Self, val: SparseTriangle_t) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
1usize,
1u8,
val as u64,
)
}
}
#[inline]
pub fn kind(&self) -> SparseKind_t {
unsafe { ::core::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }
}
#[inline]
pub fn set_kind(&mut self, val: SparseKind_t) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
self._bitfield_1.set(2usize, 3u8, val as u64)
}
}
#[inline]
pub unsafe fn kind_raw(this: *const Self) -> SparseKind_t {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
2usize,
3u8,
) as u32)
}
}
#[inline]
pub unsafe fn set_kind_raw(this: *mut Self, val: SparseKind_t) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
2usize,
3u8,
val as u64,
)
}
}
#[inline]
pub fn conjugate_transpose(&self) -> bool {
unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) }
}
#[inline]
pub fn set_conjugate_transpose(&mut self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
self._bitfield_1.set(5usize, 1u8, val as u64)
}
}
#[inline]
pub unsafe fn conjugate_transpose_raw(this: *const Self) -> bool {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
5usize,
1u8,
) as u8)
}
}
#[inline]
pub unsafe fn set_conjugate_transpose_raw(this: *mut Self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
5usize,
1u8,
val as u64,
)
}
}
#[inline]
pub fn _reserved(&self) -> ::core::ffi::c_uint {
unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 9u8) as u32) }
}
#[inline]
pub fn set__reserved(&mut self, val: ::core::ffi::c_uint) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
self._bitfield_1.set(6usize, 9u8, val as u64)
}
}
#[inline]
pub unsafe fn _reserved_raw(this: *const Self) -> ::core::ffi::c_uint {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
6usize,
9u8,
) as u32)
}
}
#[inline]
pub unsafe fn set__reserved_raw(this: *mut Self, val: ::core::ffi::c_uint) {
unsafe {
let val: u32 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
6usize,
9u8,
val as u64,
)
}
}
#[inline]
pub fn _allocatedBySparse(&self) -> bool {
unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u8) }
}
#[inline]
pub fn set__allocatedBySparse(&mut self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
self._bitfield_1.set(15usize, 1u8, val as u64)
}
}
#[inline]
pub unsafe fn _allocatedBySparse_raw(this: *const Self) -> bool {
unsafe {
::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
::core::ptr::addr_of!((*this)._bitfield_1),
15usize,
1u8,
) as u8)
}
}
#[inline]
pub unsafe fn set__allocatedBySparse_raw(this: *mut Self, val: bool) {
unsafe {
let val: u8 = ::core::mem::transmute(val);
<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
::core::ptr::addr_of_mut!((*this)._bitfield_1),
15usize,
1u8,
val as u64,
)
}
}
#[inline]
pub fn new_bitfield_1(
transpose: bool,
triangle: SparseTriangle_t,
kind: SparseKind_t,
conjugate_transpose: bool,
_reserved: ::core::ffi::c_uint,
_allocatedBySparse: bool,
) -> __BindgenBitfieldUnit<[u8; 2usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let transpose: u8 = unsafe { ::core::mem::transmute(transpose) };
transpose as u64
});
__bindgen_bitfield_unit.set(1usize, 1u8, {
let triangle: u8 = unsafe { ::core::mem::transmute(triangle) };
triangle as u64
});
__bindgen_bitfield_unit.set(2usize, 3u8, {
let kind: u32 = unsafe { ::core::mem::transmute(kind) };
kind as u64
});
__bindgen_bitfield_unit.set(5usize, 1u8, {
let conjugate_transpose: u8 = unsafe { ::core::mem::transmute(conjugate_transpose) };
conjugate_transpose as u64
});
__bindgen_bitfield_unit.set(6usize, 9u8, {
let _reserved: u32 = unsafe { ::core::mem::transmute(_reserved) };
_reserved as u64
});
__bindgen_bitfield_unit.set(15usize, 1u8, {
let _allocatedBySparse: u8 = unsafe { ::core::mem::transmute(_allocatedBySparse) };
_allocatedBySparse as u64
});
__bindgen_bitfield_unit
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseMatrixStructure {
pub rowCount: ::core::ffi::c_int,
pub columnCount: ::core::ffi::c_int,
pub columnStarts: *mut ::core::ffi::c_long,
pub rowIndices: *mut ::core::ffi::c_int,
pub attributes: SparseAttributes_t,
pub blockSize: u8,
}
impl Default for SparseMatrixStructure {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseMatrixStructureComplex {
pub rowCount: ::core::ffi::c_int,
pub columnCount: ::core::ffi::c_int,
pub columnStarts: *mut ::core::ffi::c_long,
pub rowIndices: *mut ::core::ffi::c_int,
pub attributes: SparseAttributesComplex_t,
pub blockSize: u8,
}
impl Default for SparseMatrixStructureComplex {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseMatrix_Double {
pub structure: SparseMatrixStructure,
pub data: *mut f64,
}
impl Default for SparseMatrix_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseMatrix_Float {
pub structure: SparseMatrixStructure,
pub data: *mut f32,
}
impl Default for SparseMatrix_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseMatrix_Complex_Double {
pub structure: SparseMatrixStructureComplex,
pub data: *mut __SPARSE_double_complex,
}
impl Default for SparseMatrix_Complex_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseMatrix_Complex_Float {
pub structure: SparseMatrixStructureComplex,
pub data: *mut __SPARSE_float_complex,
}
impl Default for SparseMatrix_Complex_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseVector_Double {
pub count: ::core::ffi::c_int,
pub data: *mut f64,
}
impl Default for DenseVector_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseVector_Float {
pub count: ::core::ffi::c_int,
pub data: *mut f32,
}
impl Default for DenseVector_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseVector_Complex_Double {
pub count: ::core::ffi::c_int,
pub data: *mut __SPARSE_double_complex,
}
impl Default for DenseVector_Complex_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseVector_Complex_Float {
pub count: ::core::ffi::c_int,
pub data: *mut __SPARSE_float_complex,
}
impl Default for DenseVector_Complex_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseMatrix_Double {
pub rowCount: ::core::ffi::c_int,
pub columnCount: ::core::ffi::c_int,
pub columnStride: ::core::ffi::c_int,
pub attributes: SparseAttributes_t,
pub data: *mut f64,
}
impl Default for DenseMatrix_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseMatrix_Float {
pub rowCount: ::core::ffi::c_int,
pub columnCount: ::core::ffi::c_int,
pub columnStride: ::core::ffi::c_int,
pub attributes: SparseAttributes_t,
pub data: *mut f32,
}
impl Default for DenseMatrix_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseMatrix_Complex_Double {
pub rowCount: ::core::ffi::c_int,
pub columnCount: ::core::ffi::c_int,
pub columnStride: ::core::ffi::c_int,
pub attributes: SparseAttributesComplex_t,
pub data: *mut __SPARSE_double_complex,
}
impl Default for DenseMatrix_Complex_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DenseMatrix_Complex_Float {
pub rowCount: ::core::ffi::c_int,
pub columnCount: ::core::ffi::c_int,
pub columnStride: ::core::ffi::c_int,
pub attributes: SparseAttributesComplex_t,
pub data: *mut __SPARSE_float_complex,
}
impl Default for DenseMatrix_Complex_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type SparseStatus_t = ::core::ffi::c_int;
pub type SparseFactorization_t = u8;
pub type SparseControl_t = u32;
pub type SparseOrder_t = u8;
pub type SparseScaling_t = u8;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseSymbolicFactorOptions {
pub control: SparseControl_t,
pub orderMethod: SparseOrder_t,
pub order: *mut ::core::ffi::c_int,
pub ignoreRowsAndColumns: *mut ::core::ffi::c_int,
pub malloc:
::core::option::Option<unsafe extern "C" fn(size: usize) -> *mut ::core::ffi::c_void>,
pub free: ::core::option::Option<unsafe extern "C" fn(pointer: *mut ::core::ffi::c_void)>,
pub reportError:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
}
impl Default for SparseSymbolicFactorOptions {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseNumericFactorOptions {
pub control: SparseControl_t,
pub scalingMethod: SparseScaling_t,
pub scaling: *mut ::core::ffi::c_void,
pub pivotTolerance: f64,
pub zeroTolerance: f64,
}
impl Default for SparseNumericFactorOptions {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueSymbolicFactorization {
pub status: SparseStatus_t,
pub rowCount: ::core::ffi::c_int,
pub columnCount: ::core::ffi::c_int,
pub attributes: SparseAttributes_t,
pub blockSize: u8,
pub type_: SparseFactorization_t,
pub factorization: *mut ::core::ffi::c_void,
pub workspaceSize_Float: usize,
pub workspaceSize_Double: usize,
pub factorSize_Float: usize,
pub factorSize_Double: usize,
}
impl Default for SparseOpaqueSymbolicFactorization {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueFactorization_Double {
pub status: SparseStatus_t,
pub attributes: SparseAttributes_t,
pub symbolicFactorization: SparseOpaqueSymbolicFactorization,
pub userFactorStorage: bool,
pub numericFactorization: *mut ::core::ffi::c_void,
pub solveWorkspaceRequiredStatic: usize,
pub solveWorkspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueFactorization_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueFactorization_Float {
pub status: SparseStatus_t,
pub attributes: SparseAttributes_t,
pub symbolicFactorization: SparseOpaqueSymbolicFactorization,
pub userFactorStorage: bool,
pub numericFactorization: *mut ::core::ffi::c_void,
pub solveWorkspaceRequiredStatic: usize,
pub solveWorkspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueFactorization_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueFactorization_Complex_Double {
pub status: SparseStatus_t,
pub attributes: SparseAttributesComplex_t,
pub symbolicFactorization: SparseOpaqueSymbolicFactorization,
pub userFactorStorage: bool,
pub numericFactorization: *mut ::core::ffi::c_void,
pub solveWorkspaceRequiredStatic: usize,
pub solveWorkspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueFactorization_Complex_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueFactorization_Complex_Float {
pub status: SparseStatus_t,
pub attributes: SparseAttributesComplex_t,
pub symbolicFactorization: SparseOpaqueSymbolicFactorization,
pub userFactorStorage: bool,
pub numericFactorization: *mut ::core::ffi::c_void,
pub solveWorkspaceRequiredStatic: usize,
pub solveWorkspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueFactorization_Complex_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type SparseSubfactor_t = u8;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueSubfactor_Double {
pub attributes: SparseAttributes_t,
pub contents: SparseSubfactor_t,
pub factor: SparseOpaqueFactorization_Double,
pub workspaceRequiredStatic: usize,
pub workspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueSubfactor_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueSubfactor_Float {
pub attributes: SparseAttributes_t,
pub contents: SparseSubfactor_t,
pub factor: SparseOpaqueFactorization_Float,
pub workspaceRequiredStatic: usize,
pub workspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueSubfactor_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueSubfactor_Complex_Double {
pub attributes: SparseAttributesComplex_t,
pub contents: SparseSubfactor_t,
pub factor: SparseOpaqueFactorization_Complex_Double,
pub workspaceRequiredStatic: usize,
pub workspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueSubfactor_Complex_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaqueSubfactor_Complex_Float {
pub attributes: SparseAttributesComplex_t,
pub contents: SparseSubfactor_t,
pub factor: SparseOpaqueFactorization_Complex_Float,
pub workspaceRequiredStatic: usize,
pub workspaceRequiredPerRHS: usize,
}
impl Default for SparseOpaqueSubfactor_Complex_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
#[link_name = "\u{1}__Z16SparseGetInertia31SparseOpaqueFactorization_FloatPiS0_S0_"]
pub fn SparseGetInertia(
Factored: SparseOpaqueFactorization_Float,
num_positive: *mut ::core::ffi::c_int,
num_zero: *mut ::core::ffi::c_int,
num_negative: *mut ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
#[link_name = "\u{1}__Z16SparseGetInertia32SparseOpaqueFactorization_DoublePiS0_S0_"]
pub fn SparseGetInertia1(
Factored: SparseOpaqueFactorization_Double,
num_positive: *mut ::core::ffi::c_int,
num_zero: *mut ::core::ffi::c_int,
num_negative: *mut ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
#[link_name = "\u{1}__Z16SparseGetInertia39SparseOpaqueFactorization_Complex_FloatPiS0_S0_"]
pub fn SparseGetInertia2(
Factored: SparseOpaqueFactorization_Complex_Float,
num_positive: *mut ::core::ffi::c_int,
num_zero: *mut ::core::ffi::c_int,
num_negative: *mut ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
#[link_name = "\u{1}__Z16SparseGetInertia40SparseOpaqueFactorization_Complex_DoublePiS0_S0_"]
pub fn SparseGetInertia3(
Factored: SparseOpaqueFactorization_Complex_Double,
num_positive: *mut ::core::ffi::c_int,
num_zero: *mut ::core::ffi::c_int,
num_negative: *mut ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
pub type SparsePreconditioner_t = ::core::ffi::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaquePreconditioner_Double {
pub type_: SparsePreconditioner_t,
pub mem: *mut ::core::ffi::c_void,
pub apply: ::core::option::Option<
unsafe extern "C" fn(
arg1: *mut ::core::ffi::c_void,
trans: CBLAS_TRANSPOSE,
X: DenseMatrix_Double,
Y: DenseMatrix_Double,
),
>,
}
impl Default for SparseOpaquePreconditioner_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaquePreconditioner_Float {
pub type_: SparsePreconditioner_t,
pub mem: *mut ::core::ffi::c_void,
pub apply: ::core::option::Option<
unsafe extern "C" fn(
arg1: *mut ::core::ffi::c_void,
trans: CBLAS_TRANSPOSE,
X: DenseMatrix_Float,
arg2: DenseMatrix_Float,
),
>,
}
impl Default for SparseOpaquePreconditioner_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaquePreconditioner_Complex_Double {
pub type_: SparsePreconditioner_t,
pub mem: *mut ::core::ffi::c_void,
pub apply: ::core::option::Option<
unsafe extern "C" fn(
arg1: *mut ::core::ffi::c_void,
trans: CBLAS_TRANSPOSE,
X: DenseMatrix_Complex_Double,
Y: DenseMatrix_Complex_Double,
),
>,
}
impl Default for SparseOpaquePreconditioner_Complex_Double {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SparseOpaquePreconditioner_Complex_Float {
pub type_: SparsePreconditioner_t,
pub mem: *mut ::core::ffi::c_void,
pub apply: ::core::option::Option<
unsafe extern "C" fn(
arg1: *mut ::core::ffi::c_void,
trans: CBLAS_TRANSPOSE,
X: DenseMatrix_Complex_Float,
Y: DenseMatrix_Complex_Float,
),
>,
}
impl Default for SparseOpaquePreconditioner_Complex_Float {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
pub type SparseIterativeStatus_t = ::core::ffi::c_int;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _SparseIterativeMethodBaseOptions {
pub reportError:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct SparseCGOptions {
pub reportError:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
pub maxIterations: ::core::ffi::c_int,
pub atol: f64,
pub rtol: f64,
pub reportStatus:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
}
pub type SparseGMRESVariant_t = u8;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct SparseGMRESOptions {
pub reportError:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
pub variant: SparseGMRESVariant_t,
pub nvec: ::core::ffi::c_int,
pub maxIterations: ::core::ffi::c_int,
pub atol: f64,
pub rtol: f64,
pub reportStatus:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
}
pub type SparseLSMRConvergenceTest_t = ::core::ffi::c_int;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct SparseLSMROptions {
pub reportError:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
pub lambda: f64,
pub nvec: ::core::ffi::c_int,
pub convergenceTest: SparseLSMRConvergenceTest_t,
pub atol: f64,
pub rtol: f64,
pub btol: f64,
pub conditionLimit: f64,
pub maxIterations: ::core::ffi::c_int,
pub reportStatus:
::core::option::Option<unsafe extern "C" fn(message: *const ::core::ffi::c_char)>,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct SparseIterativeMethod {
pub method: ::core::ffi::c_int,
pub options: SparseIterativeMethod__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union SparseIterativeMethod__bindgen_ty_1 {
pub base: _SparseIterativeMethodBaseOptions,
pub cg: SparseCGOptions,
pub gmres: SparseGMRESOptions,
pub lsmr: SparseLSMROptions,
pub padding: [::core::ffi::c_char; 256usize],
}
impl Default for SparseIterativeMethod__bindgen_ty_1 {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
impl Default for SparseIterativeMethod {
fn default() -> Self {
let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
unsafe {
::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
s.assume_init()
}
}
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSymbolicFactorSymmetric(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrixStructure,
options: *const SparseSymbolicFactorOptions,
) -> SparseOpaqueSymbolicFactorization;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSymbolicFactorQR(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrixStructure,
options: *const SparseSymbolicFactorOptions,
) -> SparseOpaqueSymbolicFactorization;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSymbolicFactorLU(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrixStructure,
options: *const SparseSymbolicFactorOptions,
) -> SparseOpaqueSymbolicFactorization;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRetainSymbolic(symbolicFactor: *mut SparseOpaqueSymbolicFactorization);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseDestroyOpaqueSymbolic(toFree: *mut SparseOpaqueSymbolicFactorization);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetOptionsFromSymbolicFactor(
factor: *mut SparseOpaqueSymbolicFactorization,
) -> SparseSymbolicFactorOptions;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseTrap();
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFromKindComplex(K: SparseKind_t) -> SparseKind_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseToKindComplex(K: SparseKind_t) -> SparseKind_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFromAttributeComplex(K: SparseAttributesComplex_t) -> SparseAttributes_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseToAttributeComplex(K: SparseAttributes_t) -> SparseAttributesComplex_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFromStructureComplex(K: SparseMatrixStructureComplex) -> SparseMatrixStructure;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseToStructureComplex(K: SparseMatrixStructure) -> SparseMatrixStructureComplex;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromCoordinate_Double(
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nBlock: ::core::ffi::c_long,
blockSize: u8,
attributes: SparseAttributes_t,
row: *const ::core::ffi::c_int,
col: *const ::core::ffi::c_int,
val: *const f64,
storage: *mut ::core::ffi::c_char,
workspace: *mut ::core::ffi::c_int,
) -> SparseMatrix_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromOpaque_Double(matrix: sparse_matrix_double) -> SparseMatrix_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorSymmetric_Double(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Double,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorQR_Double(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Double,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorLU_Double(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Double,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorSymmetric_Double(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Double,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorQR_Double(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Double,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorLU_Double(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Double,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorSymmetric_Double(
Matrix: *const SparseMatrix_Double,
Factorization: *mut SparseOpaqueFactorization_Double,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorQR_Double(
Matrix: *const SparseMatrix_Double,
Factorization: *mut SparseOpaqueFactorization_Double,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorLU_Double(
Matrix: *const SparseMatrix_Double,
Factorization: *mut SparseOpaqueFactorization_Double,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseUpdatePartialRefactorLU_Double(
Opaque: *mut SparseOpaqueFactorization_Double,
updateCount: ::core::ffi::c_int,
updatedIndices: *const ::core::ffi::c_int,
newMatrix: SparseMatrix_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseMultiplySubfactor_Double(
Subfactor: *const SparseOpaqueSubfactor_Double,
x: *const DenseMatrix_Double,
y: *const DenseMatrix_Double,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveSubfactor_Double(
Subfactor: *const SparseOpaqueSubfactor_Double,
b: *const DenseMatrix_Double,
x: *const DenseMatrix_Double,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveOpaque_Double(
Factored: *const SparseOpaqueFactorization_Double,
RHS: *const DenseMatrix_Double,
Soln: *const DenseMatrix_Double,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseDestroyOpaqueNumeric_Double(toFree: *mut SparseOpaqueFactorization_Double);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRetainNumeric_Double(numericFactor: *mut SparseOpaqueFactorization_Double);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetOptionsFromNumericFactor_Double(
factor: *mut SparseOpaqueFactorization_Double,
) -> SparseNumericFactorOptions;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetWorkspaceRequired_Double(
Subfactor: SparseSubfactor_t,
Factor: SparseOpaqueFactorization_Double,
workStatic: *mut usize,
workPerRHS: *mut usize,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetIterativeStateSize_Double(
method: *const SparseIterativeMethod,
preconditioner: bool,
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nrhs: ::core::ffi::c_int,
) -> usize;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGIterate_Double(
options: *const SparseCGOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Double,
B: *mut DenseMatrix_Double,
R: *mut DenseMatrix_Double,
Preconditioner: *const SparseOpaquePreconditioner_Double,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGSolve_Double(
options: *const SparseCGOptions,
X: *mut DenseMatrix_Double,
B: *mut DenseMatrix_Double,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Double,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESIterate_Double(
options: *const SparseGMRESOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Double,
B: *mut DenseMatrix_Double,
R: *mut DenseMatrix_Double,
Preconditioner: *const SparseOpaquePreconditioner_Double,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESSolve_Double(
options: *mut SparseGMRESOptions,
X: *mut DenseMatrix_Double,
B: *mut DenseMatrix_Double,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Double,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRIterate_Double(
options: *const SparseLSMROptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Double,
B: *mut DenseMatrix_Double,
R: *mut DenseMatrix_Double,
Preconditioner: *const SparseOpaquePreconditioner_Double,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRSolve_Double(
options: *mut SparseLSMROptions,
X: *mut DenseMatrix_Double,
B: *mut DenseMatrix_Double,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Double,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCreatePreconditioner_Double(
type_: SparsePreconditioner_t,
A: *mut SparseMatrix_Double,
) -> SparseOpaquePreconditioner_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseReleaseOpaquePreconditioner_Double(
toFree: *mut SparseOpaquePreconditioner_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSpMV_Double(
alpha: f64,
A: SparseMatrix_Double,
x: DenseMatrix_Double,
accumulate: bool,
y: DenseMatrix_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromCoordinate_Float(
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nBlock: ::core::ffi::c_long,
blockSize: u8,
attributes: SparseAttributes_t,
row: *const ::core::ffi::c_int,
col: *const ::core::ffi::c_int,
val: *const f32,
storage: *mut ::core::ffi::c_char,
workspace: *mut ::core::ffi::c_int,
) -> SparseMatrix_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromOpaque_Float(matrix: sparse_matrix_float) -> SparseMatrix_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorSymmetric_Float(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Float,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorQR_Float(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Float,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorLU_Float(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Float,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorSymmetric_Float(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Float,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorQR_Float(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Float,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorLU_Float(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Float,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorSymmetric_Float(
Matrix: *const SparseMatrix_Float,
Factorization: *mut SparseOpaqueFactorization_Float,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorQR_Float(
Matrix: *const SparseMatrix_Float,
Factorization: *mut SparseOpaqueFactorization_Float,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorLU_Float(
Matrix: *const SparseMatrix_Float,
Factorization: *mut SparseOpaqueFactorization_Float,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseUpdatePartialRefactorLU_Float(
Opaque: *mut SparseOpaqueFactorization_Float,
updateCount: ::core::ffi::c_int,
updatedIndices: *const ::core::ffi::c_int,
newMatrix: SparseMatrix_Float,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseMultiplySubfactor_Float(
Subfactor: *const SparseOpaqueSubfactor_Float,
x: *const DenseMatrix_Float,
y: *const DenseMatrix_Float,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveSubfactor_Float(
Subfactor: *const SparseOpaqueSubfactor_Float,
b: *const DenseMatrix_Float,
x: *const DenseMatrix_Float,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveOpaque_Float(
Factored: *const SparseOpaqueFactorization_Float,
RHS: *const DenseMatrix_Float,
Soln: *const DenseMatrix_Float,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseDestroyOpaqueNumeric_Float(toFree: *mut SparseOpaqueFactorization_Float);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRetainNumeric_Float(numericFactor: *mut SparseOpaqueFactorization_Float);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetOptionsFromNumericFactor_Float(
factor: *mut SparseOpaqueFactorization_Float,
) -> SparseNumericFactorOptions;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetWorkspaceRequired_Float(
Subfactor: SparseSubfactor_t,
Factor: SparseOpaqueFactorization_Float,
workStatic: *mut usize,
workPerRHS: *mut usize,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetIterativeStateSize_Float(
method: *const SparseIterativeMethod,
preconditioner: bool,
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nrhs: ::core::ffi::c_int,
) -> usize;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGIterate_Float(
options: *const SparseCGOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Float,
B: *mut DenseMatrix_Float,
R: *mut DenseMatrix_Float,
Preconditioner: *const SparseOpaquePreconditioner_Float,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGSolve_Float(
options: *const SparseCGOptions,
X: *mut DenseMatrix_Float,
B: *mut DenseMatrix_Float,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Float,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESIterate_Float(
options: *const SparseGMRESOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Float,
B: *mut DenseMatrix_Float,
R: *mut DenseMatrix_Float,
Preconditioner: *const SparseOpaquePreconditioner_Float,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESSolve_Float(
options: *mut SparseGMRESOptions,
X: *mut DenseMatrix_Float,
B: *mut DenseMatrix_Float,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Float,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRIterate_Float(
options: *const SparseLSMROptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Float,
B: *mut DenseMatrix_Float,
R: *mut DenseMatrix_Float,
Preconditioner: *const SparseOpaquePreconditioner_Float,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRSolve_Float(
options: *mut SparseLSMROptions,
X: *mut DenseMatrix_Float,
B: *mut DenseMatrix_Float,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Float,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCreatePreconditioner_Float(
type_: SparsePreconditioner_t,
A: *mut SparseMatrix_Float,
) -> SparseOpaquePreconditioner_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseReleaseOpaquePreconditioner_Float(toFree: *mut SparseOpaquePreconditioner_Float);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSpMV_Float(
alpha: f32,
A: SparseMatrix_Float,
x: DenseMatrix_Float,
accumulate: bool,
y: DenseMatrix_Float,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromCoordinate_Complex_Double(
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nBlock: ::core::ffi::c_long,
blockSize: u8,
attributes: SparseAttributesComplex_t,
row: *const ::core::ffi::c_int,
col: *const ::core::ffi::c_int,
val: *const __SPARSE_double_complex,
storage: *mut ::core::ffi::c_char,
workspace: *mut ::core::ffi::c_int,
) -> SparseMatrix_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromOpaque_Complex_Double(
matrix: sparse_matrix_double_complex,
) -> SparseMatrix_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorSymmetric_Complex_Double(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Double,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorHermitian_Complex_Double(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Double,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorQR_Complex_Double(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Double,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorLU_Complex_Double(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Double,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorSymmetric_Complex_Double(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Double,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorHermitian_Complex_Double(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Double,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorQR_Complex_Double(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Double,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorLU_Complex_Double(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Double,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorSymmetric_Complex_Double(
Matrix: *const SparseMatrix_Complex_Double,
Factorization: *mut SparseOpaqueFactorization_Complex_Double,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorHermitian_Complex_Double(
Matrix: *const SparseMatrix_Complex_Double,
Factorization: *mut SparseOpaqueFactorization_Complex_Double,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorQR_Complex_Double(
Matrix: *const SparseMatrix_Complex_Double,
Factorization: *mut SparseOpaqueFactorization_Complex_Double,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorLU_Complex_Double(
Matrix: *const SparseMatrix_Complex_Double,
Factorization: *mut SparseOpaqueFactorization_Complex_Double,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseUpdatePartialRefactorLU_Complex_Double(
Opaque: *mut SparseOpaqueFactorization_Complex_Double,
updateCount: ::core::ffi::c_int,
updatedIndices: *const ::core::ffi::c_int,
newMatrix: SparseMatrix_Complex_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseMultiplySubfactor_Complex_Double(
Subfactor: *const SparseOpaqueSubfactor_Complex_Double,
x: *const DenseMatrix_Complex_Double,
y: *const DenseMatrix_Complex_Double,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveSubfactor_Complex_Double(
Subfactor: *const SparseOpaqueSubfactor_Complex_Double,
b: *const DenseMatrix_Complex_Double,
x: *const DenseMatrix_Complex_Double,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveOpaque_Complex_Double(
Factored: *const SparseOpaqueFactorization_Complex_Double,
RHS: *const DenseMatrix_Complex_Double,
Soln: *const DenseMatrix_Complex_Double,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseDestroyOpaqueNumeric_Complex_Double(
toFree: *mut SparseOpaqueFactorization_Complex_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRetainNumeric_Complex_Double(
numericFactor: *mut SparseOpaqueFactorization_Complex_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetOptionsFromNumericFactor_Complex_Double(
factor: *mut SparseOpaqueFactorization_Complex_Double,
) -> SparseNumericFactorOptions;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetWorkspaceRequired_Complex_Double(
Subfactor: SparseSubfactor_t,
Factor: SparseOpaqueFactorization_Complex_Double,
workStatic: *mut usize,
workPerRHS: *mut usize,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetIterativeStateSize_Complex_Double(
method: *const SparseIterativeMethod,
preconditioner: bool,
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nrhs: ::core::ffi::c_int,
) -> usize;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGIterate_Complex_Double(
options: *const SparseCGOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Complex_Double,
B: *mut DenseMatrix_Complex_Double,
R: *mut DenseMatrix_Complex_Double,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Double,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGSolve_Complex_Double(
options: *const SparseCGOptions,
X: *mut DenseMatrix_Complex_Double,
B: *mut DenseMatrix_Complex_Double,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Double,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESIterate_Complex_Double(
options: *const SparseGMRESOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Complex_Double,
B: *mut DenseMatrix_Complex_Double,
R: *mut DenseMatrix_Complex_Double,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Double,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESSolve_Complex_Double(
options: *mut SparseGMRESOptions,
X: *mut DenseMatrix_Complex_Double,
B: *mut DenseMatrix_Complex_Double,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Double,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRIterate_Complex_Double(
options: *const SparseLSMROptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Complex_Double,
B: *mut DenseMatrix_Complex_Double,
R: *mut DenseMatrix_Complex_Double,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Double,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRSolve_Complex_Double(
options: *mut SparseLSMROptions,
X: *mut DenseMatrix_Complex_Double,
B: *mut DenseMatrix_Complex_Double,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Double,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCreatePreconditioner_Complex_Double(
type_: SparsePreconditioner_t,
A: *mut SparseMatrix_Complex_Double,
) -> SparseOpaquePreconditioner_Complex_Double;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseReleaseOpaquePreconditioner_Complex_Double(
toFree: *mut SparseOpaquePreconditioner_Complex_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSpMV_Complex_Double(
alpha: __SPARSE_double_complex,
A: SparseMatrix_Complex_Double,
x: DenseMatrix_Complex_Double,
accumulate: bool,
y: DenseMatrix_Complex_Double,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromCoordinate_Complex_Float(
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nBlock: ::core::ffi::c_long,
blockSize: u8,
attributes: SparseAttributesComplex_t,
row: *const ::core::ffi::c_int,
col: *const ::core::ffi::c_int,
val: *const __SPARSE_float_complex,
storage: *mut ::core::ffi::c_char,
workspace: *mut ::core::ffi::c_int,
) -> SparseMatrix_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseConvertFromOpaque_Complex_Float(
matrix: sparse_matrix_float_complex,
) -> SparseMatrix_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorSymmetric_Complex_Float(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Float,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorHermitian_Complex_Float(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Float,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorQR_Complex_Float(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Float,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseNumericFactorLU_Complex_Float(
symbolicFactor: *mut SparseOpaqueSymbolicFactorization,
Matrix: *const SparseMatrix_Complex_Float,
options: *const SparseNumericFactorOptions,
factorStorage: *mut ::core::ffi::c_void,
workspace: *mut ::core::ffi::c_void,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorSymmetric_Complex_Float(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Float,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorHermitian_Complex_Float(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Float,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorQR_Complex_Float(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Float,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseFactorLU_Complex_Float(
factorType: SparseFactorization_t,
Matrix: *const SparseMatrix_Complex_Float,
sfoptions: *const SparseSymbolicFactorOptions,
nfoptions: *const SparseNumericFactorOptions,
) -> SparseOpaqueFactorization_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorSymmetric_Complex_Float(
Matrix: *const SparseMatrix_Complex_Float,
Factorization: *mut SparseOpaqueFactorization_Complex_Float,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorHermitian_Complex_Float(
Matrix: *const SparseMatrix_Complex_Float,
Factorization: *mut SparseOpaqueFactorization_Complex_Float,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorQR_Complex_Float(
Matrix: *const SparseMatrix_Complex_Float,
Factorization: *mut SparseOpaqueFactorization_Complex_Float,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRefactorLU_Complex_Float(
Matrix: *const SparseMatrix_Complex_Float,
Factorization: *mut SparseOpaqueFactorization_Complex_Float,
nfoptions: *const SparseNumericFactorOptions,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseUpdatePartialRefactorLU_Complex_Float(
Opaque: *mut SparseOpaqueFactorization_Complex_Float,
updateCount: ::core::ffi::c_int,
updatedIndices: *const ::core::ffi::c_int,
newMatrix: SparseMatrix_Complex_Float,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseMultiplySubfactor_Complex_Float(
Subfactor: *const SparseOpaqueSubfactor_Complex_Float,
x: *const DenseMatrix_Complex_Float,
y: *const DenseMatrix_Complex_Float,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveSubfactor_Complex_Float(
Subfactor: *const SparseOpaqueSubfactor_Complex_Float,
b: *const DenseMatrix_Complex_Float,
x: *const DenseMatrix_Complex_Float,
workspace: *mut ::core::ffi::c_char,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSolveOpaque_Complex_Float(
Factored: *const SparseOpaqueFactorization_Complex_Float,
RHS: *const DenseMatrix_Complex_Float,
Soln: *const DenseMatrix_Complex_Float,
workspace: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseDestroyOpaqueNumeric_Complex_Float(
toFree: *mut SparseOpaqueFactorization_Complex_Float,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseRetainNumeric_Complex_Float(
numericFactor: *mut SparseOpaqueFactorization_Complex_Float,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetOptionsFromNumericFactor_Complex_Float(
factor: *mut SparseOpaqueFactorization_Complex_Float,
) -> SparseNumericFactorOptions;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetWorkspaceRequired_Complex_Float(
Subfactor: SparseSubfactor_t,
Factor: SparseOpaqueFactorization_Complex_Float,
workStatic: *mut usize,
workPerRHS: *mut usize,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGetIterativeStateSize_Complex_Float(
method: *const SparseIterativeMethod,
preconditioner: bool,
m: ::core::ffi::c_int,
n: ::core::ffi::c_int,
nrhs: ::core::ffi::c_int,
) -> usize;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGIterate_Complex_Float(
options: *const SparseCGOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Complex_Float,
B: *mut DenseMatrix_Complex_Float,
R: *mut DenseMatrix_Complex_Float,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Float,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCGSolve_Complex_Float(
options: *const SparseCGOptions,
X: *mut DenseMatrix_Complex_Float,
B: *mut DenseMatrix_Complex_Float,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Float,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESIterate_Complex_Float(
options: *const SparseGMRESOptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Complex_Float,
B: *mut DenseMatrix_Complex_Float,
R: *mut DenseMatrix_Complex_Float,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Float,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseGMRESSolve_Complex_Float(
options: *mut SparseGMRESOptions,
X: *mut DenseMatrix_Complex_Float,
B: *mut DenseMatrix_Complex_Float,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Float,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRIterate_Complex_Float(
options: *const SparseLSMROptions,
iteration: ::core::ffi::c_int,
state: *mut ::core::ffi::c_char,
converged: *const bool,
X: *mut DenseMatrix_Complex_Float,
B: *mut DenseMatrix_Complex_Float,
R: *mut DenseMatrix_Complex_Float,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Float,
ApplyOperator: *mut ::core::ffi::c_void,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseLSMRSolve_Complex_Float(
options: *mut SparseLSMROptions,
X: *mut DenseMatrix_Complex_Float,
B: *mut DenseMatrix_Complex_Float,
ApplyOperator: *mut ::core::ffi::c_void,
Preconditioner: *const SparseOpaquePreconditioner_Complex_Float,
) -> SparseIterativeStatus_t;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseCreatePreconditioner_Complex_Float(
type_: SparsePreconditioner_t,
A: *mut SparseMatrix_Complex_Float,
) -> SparseOpaquePreconditioner_Complex_Float;
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseReleaseOpaquePreconditioner_Complex_Float(
toFree: *mut SparseOpaquePreconditioner_Complex_Float,
);
}
#[link(name = "Accelerate", kind = "framework")]
unsafe extern "C" {
pub fn _SparseSpMV_Complex_Float(
alpha: __SPARSE_float_complex,
A: SparseMatrix_Complex_Float,
x: DenseMatrix_Complex_Float,
accumulate: bool,
y: DenseMatrix_Complex_Float,
);
}