Skip to main content

Complex64

Struct Complex64 

Source
#[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: f64

Real part.

§im: f64

Imaginary part.

Implementations§

Source§

impl Complex64

Source

pub const ZERO: Complex64

0 + 0i.

Source

pub const ONE: Complex64

1 + 0i.

Source

pub const I: Complex64

0 + 1i.

Source

pub const fn new(re: f64, im: f64) -> Complex64

Create a complex number re + im·i.

Source

pub fn norm_sqr(&self) -> f64

Modulus squared re² + im².

Source

pub fn abs(&self) -> f64

Modulus √(re² + im²).

Source

pub fn conj(&self) -> Complex64

Complex conjugate.

Trait Implementations§

Source§

impl Clone for Complex64

Source§

fn clone(&self) -> Complex64

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl ComplexScalar for Complex64

Source§

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<()>

y[indx] := α·x + y[indx] (sparse vector AXPY).
Source§

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<()>

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>

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)>

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<()>

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<()>

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<()>

One ILU(0) smoothing step against the matrix handle.
Source§

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<()>

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<()>

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<()>

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<()>

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

Sparse-sparse C := α · op(A) + B. Read more
Source§

fn sorv( sor_type: SorType, descr: &MatDescr, a: aoclsparse_matrix, omega: Self, alpha: Self, x: &mut [Self], b: &[Self], ) -> Result<()>

One step of (S)SOR / forward / backward Gauss-Seidel relaxation.
Source§

impl Debug for Complex64

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<[f64; 2]> for Complex64

Source§

fn from(a: [f64; 2]) -> Complex64

Converts to this type from the input type.
Source§

impl From<(f64, f64)> for Complex64

Source§

fn from(_: (f64, f64)) -> Complex64

Converts to this type from the input type.
Source§

impl From<f64> for Complex64

Source§

fn from(re: f64) -> Complex64

Converts to this type from the input type.
Source§

impl PartialEq for Complex64

Source§

fn eq(&self, other: &Complex64) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Complex64

Source§

impl Sealed for Complex64

Source§

impl StructuralPartialEq for Complex64

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.