#[repr(C)]pub struct Complex64 {
pub re: f64,
pub im: f64,
}Expand description
Double-precision complex number, ABI-compatible with the C struct
{ double real; double imag; } used by BLIS’s dcomplex, LAPACK’s
lapack_complex_double, and FFTW’s fftw_complex.
Fields§
§re: f64Real part.
im: f64Imaginary part.
Implementations§
Trait Implementations§
Source§impl ComplexScalar for Complex64
impl ComplexScalar for Complex64
Source§type Real = f64
type Real = f64
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 [f64; 100],
) -> Result<()>
fn itsol_solve( handle: aoclsparse_itsol_handle, n: usize, mat: aoclsparse_matrix, descr: &MatDescr, b: &[Self], x: &mut [Self], rinfo: &mut [f64; 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 Complex64
impl Sealed for Complex64
impl StructuralPartialEq for Complex64
Auto Trait Implementations§
impl Freeze for Complex64
impl RefUnwindSafe for Complex64
impl Send for Complex64
impl Sync for Complex64
impl Unpin for Complex64
impl UnsafeUnpin for Complex64
impl UnwindSafe for Complex64
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