Compressed Sparse Row (CSR) Format
[Matrix Types]


Detailed Description

BeBOP-OSKI supports a general form of compressed sparse row, with the following "features":

For a detailed description of the data structure and its fields, see oski_matCSR_t.


Files

file  CSR/format.h
 Compressed sparse row data structure.
file  CSR/module.h
 Compressed sparse row implementation.
file  check.c
 Check CSR properties.
file  src/CSR/getset.c
 CSR get/set value routines.
file  CSR_MatMult.h
 CSR sparse matrix-vector multiply implementation in the non-symmetric/non-Hermitian case.
file  src/CSR/matmult.c
 Sparse matrix-vector multiply implementation for a compressed sparse row (CSR) matrix.
file  CSR/module.c
 Compressed sparse row (CSR) module.
file  CSR_HermMatMult.h
 Prototypes for subroutines that compute variations on $y \leftarrow y + \alpha \cdot op(A) \cdot x$, where $A$ is Hermitian (i.e., $A = A^H$) and $op(A) = A$.
file  CSR_HermMatMult_v1_a1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatMult_v1_a1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_HermMatMult_v1_a1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatMult_v1_a1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_HermMatMult_v1_aN1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatMult_v1_aN1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_HermMatMult_v1_aN1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatMult_v1_aN1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_HermMatMult_v1_aX_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatMult_v1_aX_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
file  CSR_HermMatMult_v1_aX_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatMult_v1_aX_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.
file  CSR_HermMatTransMult.h
 Prototypes for subroutines that compute variations on $y \leftarrow y + \alpha \cdot op(A) \cdot x$, where $A$ is Hermitian (i.e., $A = A^H$) and $op(A) = A^T$.
file  CSR_HermMatTransMult_v1_a1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatTransMult_v1_a1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_HermMatTransMult_v1_a1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatTransMult_v1_a1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_HermMatTransMult_v1_aN1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatTransMult_v1_aN1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_HermMatTransMult_v1_aN1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatTransMult_v1_aN1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_HermMatTransMult_v1_aX_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatTransMult_v1_aX_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
file  CSR_HermMatTransMult_v1_aX_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
file  CSR_HermMatTransMult_v1_aX_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatHermMult.h
 Prototypes for subroutines that compute variations on $y \leftarrow y + \alpha \cdot op(A) \cdot x$, where $A$ is symmetric (i.e., $A = A^T$) and $op(A) = A^H$.
file  CSR_SymmMatHermMult_v1_a1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatHermMult_v1_a1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatHermMult_v1_a1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatHermMult_v1_a1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatHermMult_v1_aN1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatHermMult_v1_aN1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatHermMult_v1_aN1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatHermMult_v1_aN1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatHermMult_v1_aX_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatHermMult_v1_aX_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatHermMult_v1_aX_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatHermMult_v1_aX_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatMult.h
 Prototypes for subroutines that compute variations on $y \leftarrow y + \alpha \cdot op(A) \cdot x$, where $A$ is symmetric (i.e., $A = A^T$) and $op(A) = A$.
file  CSR_SymmMatMult_v1_a1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatMult_v1_a1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatMult_v1_a1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatMult_v1_a1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatMult_v1_aN1_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatMult_v1_aN1_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatMult_v1_aN1_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatMult_v1_aN1_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatMult_v1_aX_b1_xs1_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatMult_v1_aX_b1_xs1_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
file  CSR_SymmMatMult_v1_aX_b1_xsX_ys1.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
file  CSR_SymmMatMult_v1_aX_b1_xsX_ysX.c
 $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.
file  transpose.c
 Implements a routine to transpose a CSR matrix.
#define INC_OSKI_CSR_FORMAT_H
 oski/CSR/format.h included.

Functions

void CSR_HermMatMult_v1_a1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_HermMatMult_v1_a1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_HermMatMult_v1_a1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_HermMatMult_v1_a1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_HermMatMult_v1_aN1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_HermMatMult_v1_aN1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_HermMatMult_v1_aN1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_HermMatMult_v1_aN1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_HermMatMult_v1_aX_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
void CSR_HermMatMult_v1_aX_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
void CSR_HermMatMult_v1_aX_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
void CSR_HermMatMult_v1_aX_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.
void CSR_HermMatTransMult_v1_a1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_HermMatTransMult_v1_a1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_HermMatTransMult_v1_a1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_HermMatTransMult_v1_a1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_HermMatTransMult_v1_aN1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_HermMatTransMult_v1_aN1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_HermMatTransMult_v1_aN1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_HermMatTransMult_v1_aN1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_HermMatTransMult_v1_aX_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
void CSR_HermMatTransMult_v1_aX_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
void CSR_HermMatTransMult_v1_aX_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
void CSR_HermMatTransMult_v1_aX_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.
void CSR_SymmMatHermMult_v1_a1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatHermMult_v1_a1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_SymmMatHermMult_v1_a1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatHermMult_v1_a1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_SymmMatHermMult_v1_aN1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatHermMult_v1_aN1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_SymmMatHermMult_v1_aN1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatHermMult_v1_aN1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_SymmMatHermMult_v1_aX_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatHermMult_v1_aX_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
void CSR_SymmMatHermMult_v1_aX_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatHermMult_v1_aX_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.
void CSR_SymmMatMult_v1_a1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatMult_v1_a1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_SymmMatMult_v1_a1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatMult_v1_a1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_SymmMatMult_v1_aN1_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatMult_v1_aN1_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.
void CSR_SymmMatMult_v1_aN1_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatMult_v1_aN1_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.
void CSR_SymmMatMult_v1_aX_b1_xs1_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatMult_v1_aX_b1_xs1_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.
void CSR_SymmMatMult_v1_aX_b1_xsX_ys1 (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.
void CSR_SymmMatMult_v1_aX_b1_xsX_ysX (oski_index_t m, oski_index_t n, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_index_t index_base, oski_value_t alpha, const oski_value_t *restrict x, oski_index_t incx, oski_value_t *restrict y, oski_index_t incy)
 Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.


Function Documentation

void CSR_HermMatMult_v1_a1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_a1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_a1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_a1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aN1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aN1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aN1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aN1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aX_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aX_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aX_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatMult_v1_aX_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_a1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_a1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_a1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_a1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aN1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aN1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aN1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aN1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aX_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aX_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aX_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_HermMatTransMult_v1_aX_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is Hermitian (i.e., $A = A^H$), $op(A) = A^T$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_a1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_a1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_a1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_a1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aN1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aN1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aN1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aN1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aX_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aX_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aX_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatHermMult_v1_aX_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A^H$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_a1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_a1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_a1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_a1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = 1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aN1_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aN1_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aN1_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aN1_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = -1$, x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aX_b1_xs1_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aX_b1_xs1_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is unit-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aX_b1_xsX_ys1 oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is unit-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!

void CSR_SymmMatMult_v1_aX_b1_xsX_ysX oski_index_t  m,
oski_index_t  n,
const oski_index_t *restrict  ptr,
const oski_index_t *restrict  ind,
const oski_value_t *restrict  val,
oski_index_t  index_base,
oski_value_t  alpha,
const oski_value_t *restrict  x,
oski_index_t  incx,
oski_value_t *restrict  y,
oski_index_t  incy
 

Computes $y \leftarrow y + \alpha\cdot op(A)\cdot x$, where $A$ is symmetric (i.e., $A = A^T$), $op(A) = A$, $\alpha = $ (a general value), x is general-stride accessible, and y is general-stride accessible.

Precondition:
Column indices must be sorted in ascending order.

Unlike non-symmetric case, the input pointers should not be index-adjusted yet!


Generated on Wed Sep 19 16:41:23 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6