#[repr(C)]pub struct Complex32 {
pub re: f32,
pub im: f32,
}Expand description
Single-precision complex number, ABI-compatible with the C struct
{ float real; float imag; } used by BLIS’s scomplex, LAPACK’s
lapack_complex_float, and FFTW’s fftwf_complex.
Fields§
§re: f32Real part.
im: f32Imaginary part.
Implementations§
Trait Implementations§
Source§impl ComplexScalar for Complex32
impl ComplexScalar for Complex32
Source§type Real = f32
type Real = f32
Underlying real type —
f32 for Complex32, f64 for Complex64.
Used to type the rinfo[100] array returned by iterative solvers,
which is real-valued even for complex problems.Source§fn axpyi(
alpha: Self,
x: &[Self],
indx: &[aoclsparse_int],
y: &mut [Self],
) -> Result<()>
fn axpyi( alpha: Self, x: &[Self], indx: &[aoclsparse_int], y: &mut [Self], ) -> Result<()>
y[indx] := α·x + y[indx] (sparse vector AXPY).Source§fn gthr(y: &[Self], indx: &[aoclsparse_int], x: &mut [Self]) -> Result<()>
fn gthr(y: &[Self], indx: &[aoclsparse_int], x: &mut [Self]) -> Result<()>
x[i] := y[indx[i]] (gather).Source§fn sctr(x: &[Self], indx: &[aoclsparse_int], y: &mut [Self]) -> Result<()>
fn sctr(x: &[Self], indx: &[aoclsparse_int], y: &mut [Self]) -> Result<()>
y[indx[i]] := x[i] (scatter).Source§fn create_csr(
base: IndexBase,
m: usize,
n: usize,
nnz: usize,
row_ptr: *mut aoclsparse_int,
col_idx: *mut aoclsparse_int,
val: *mut Self,
) -> Result<aoclsparse_matrix>
fn create_csr( base: IndexBase, m: usize, n: usize, nnz: usize, row_ptr: *mut aoclsparse_int, col_idx: *mut aoclsparse_int, val: *mut Self, ) -> Result<aoclsparse_matrix>
Wrap raw CSR pointers in an
aoclsparse_matrix handle.Source§fn export_csr(
mat: aoclsparse_matrix,
) -> Result<(IndexBase, usize, usize, usize, *mut aoclsparse_int, *mut aoclsparse_int, *mut Self)>
fn export_csr( mat: aoclsparse_matrix, ) -> Result<(IndexBase, usize, usize, usize, *mut aoclsparse_int, *mut aoclsparse_int, *mut Self)>
Read out a library-owned CSR matrix’s metadata and array pointers.
Source§fn mv(
op: Trans,
alpha: Self,
mat: aoclsparse_matrix,
descr: &MatDescr,
x: &[Self],
beta: Self,
y: &mut [Self],
) -> Result<()>
fn mv( op: Trans, alpha: Self, mat: aoclsparse_matrix, descr: &MatDescr, x: &[Self], beta: Self, y: &mut [Self], ) -> Result<()>
y := α · op(A) · x + β · y via the high-level matrix handle.Source§fn trsv(
op: Trans,
alpha: Self,
mat: aoclsparse_matrix,
descr: &MatDescr,
b: &[Self],
x: &mut [Self],
) -> Result<()>
fn trsv( op: Trans, alpha: Self, mat: aoclsparse_matrix, descr: &MatDescr, b: &[Self], x: &mut [Self], ) -> Result<()>
Solve
op(A) · x = α · b where A is sparse triangular.Source§fn ilu_smoother(
op: Trans,
a: aoclsparse_matrix,
descr: &MatDescr,
x: &mut [Self],
b: &[Self],
) -> Result<()>
fn ilu_smoother( op: Trans, a: aoclsparse_matrix, descr: &MatDescr, x: &mut [Self], b: &[Self], ) -> Result<()>
One ILU(0) smoothing step against the matrix handle.
Source§fn itsol_init(handle: &mut aoclsparse_itsol_handle) -> Result<()>
fn itsol_init(handle: &mut aoclsparse_itsol_handle) -> Result<()>
Initialise an iterative-solver handle for this scalar type.
Source§fn itsol_solve(
handle: aoclsparse_itsol_handle,
n: usize,
mat: aoclsparse_matrix,
descr: &MatDescr,
b: &[Self],
x: &mut [Self],
rinfo: &mut [f32; 100],
) -> Result<()>
fn itsol_solve( handle: aoclsparse_itsol_handle, n: usize, mat: aoclsparse_matrix, descr: &MatDescr, b: &[Self], x: &mut [Self], rinfo: &mut [f32; 100], ) -> Result<()>
Run the iterative solver’s forward (direct) interface.
Source§fn csrmm(
op: Trans,
alpha: Self,
a: aoclsparse_matrix,
descr: &MatDescr,
order: Order,
b: &[Self],
n: usize,
ldb: usize,
beta: Self,
c: &mut [Self],
ldc: usize,
) -> Result<()>
fn csrmm( op: Trans, alpha: Self, a: aoclsparse_matrix, descr: &MatDescr, order: Order, b: &[Self], n: usize, ldb: usize, beta: Self, c: &mut [Self], ldc: usize, ) -> Result<()>
C := α · op(A) · B + β · C where A is sparse (CSR via the
matrix handle) and B, C are dense.Source§fn spmmd(
op: Trans,
a: aoclsparse_matrix,
b: aoclsparse_matrix,
layout: Order,
c: &mut [Self],
ldc: usize,
) -> Result<()>
fn spmmd( op: Trans, a: aoclsparse_matrix, b: aoclsparse_matrix, layout: Order, c: &mut [Self], ldc: usize, ) -> Result<()>
C := op(A) · B where both A and B are sparse and C is dense.Source§fn sp2md(
op_a: Trans,
descr_a: &MatDescr,
a: aoclsparse_matrix,
op_b: Trans,
descr_b: &MatDescr,
b: aoclsparse_matrix,
alpha: Self,
beta: Self,
c: &mut [Self],
layout: Order,
ldc: usize,
) -> Result<()>
fn sp2md( op_a: Trans, descr_a: &MatDescr, a: aoclsparse_matrix, op_b: Trans, descr_b: &MatDescr, b: aoclsparse_matrix, alpha: Self, beta: Self, c: &mut [Self], layout: Order, ldc: usize, ) -> Result<()>
C := α · op_A(A) · op_B(B) + β · C (sparse·sparse → dense).Source§unsafe fn add_ffi(
op: aoclsparse_operation,
a: aoclsparse_matrix,
alpha: Self,
b: aoclsparse_matrix,
out: *mut aoclsparse_matrix,
) -> aoclsparse_status
unsafe fn add_ffi( op: aoclsparse_operation, a: aoclsparse_matrix, alpha: Self, b: aoclsparse_matrix, out: *mut aoclsparse_matrix, ) -> aoclsparse_status
Sparse-sparse
C := α · op(A) + B. Read moreimpl Copy for Complex32
impl Sealed for Complex32
impl StructuralPartialEq for Complex32
Auto Trait Implementations§
impl Freeze for Complex32
impl RefUnwindSafe for Complex32
impl Send for Complex32
impl Sync for Complex32
impl Unpin for Complex32
impl UnsafeUnpin for Complex32
impl UnwindSafe for Complex32
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more