Skip to main content

Complex32

Struct Complex32 

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

Real part.

§im: f32

Imaginary part.

Implementations§

Source§

impl Complex32

Source

pub const ZERO: Complex32

0 + 0i.

Source

pub const ONE: Complex32

1 + 0i.

Source

pub const I: Complex32

0 + 1i.

Source

pub const fn new(re: f32, im: f32) -> Complex32

Create a complex number re + im·i.

Source

pub fn norm_sqr(&self) -> f32

Modulus squared re² + im² (avoids the square root of abs).

Source

pub fn abs(&self) -> f32

Modulus √(re² + im²).

Source

pub fn conj(&self) -> Complex32

Complex conjugate.

Trait Implementations§

Source§

impl Clone for Complex32

Source§

fn clone(&self) -> Complex32

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 Complex32

Source§

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

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

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 Complex32

Source§

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

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

impl From<[f32; 2]> for Complex32

Source§

fn from(a: [f32; 2]) -> Complex32

Converts to this type from the input type.
Source§

impl From<(f32, f32)> for Complex32

Source§

fn from(_: (f32, f32)) -> Complex32

Converts to this type from the input type.
Source§

impl From<f32> for Complex32

Source§

fn from(re: f32) -> Complex32

Converts to this type from the input type.
Source§

impl PartialEq for Complex32

Source§

fn eq(&self, other: &Complex32) -> 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 Complex32

Source§

impl Sealed for Complex32

Source§

impl StructuralPartialEq for Complex32

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.