A module for performing linear algebra using sparse matrices.
Will scale a sparse matrix by a constant.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(inout) | :: | matA | Matrix A.  | 
  
||
| real(kind=NTREAL), | intent(in) | :: | constant | Constant scale factor.  | 
  
Will scale a sparse matrix by a constant.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(inout) | :: | matA | Matrix A.  | 
  
||
| real(kind=NTREAL), | intent(in) | :: | constant | Constant scale factor.  | 
  
Will scale a sparse matrix by a constant.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(inout) | :: | matA | Matrix A.  | 
  
||
| complex(kind=NTCOMPLEX), | intent(in) | :: | constant | Constant scale factor.  | 
  
Matrix B = alpha*Matrix A + Matrix B (AXPY). This will utilize the sparse vector addition routine.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsr), | intent(inout) | :: | matB | Matrix B.  | 
  
||
| real(kind=NTREAL), | intent(in), | optional | :: | alpha_in | Multiplier (default=1.0).  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | threshold_in | For flushing values to zero (default=0).  | 
  
Matrix B = alpha*Matrix A + Matrix B (AXPY). This will utilize the sparse vector addition routine.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsc), | intent(inout) | :: | matB | Matrix B.  | 
  
||
| real(kind=NTREAL), | intent(in), | optional | :: | alpha_in | Multiplier (default=1.0).  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | threshold_in | For flushing values to zero (default=0).  | 
  
Product = sum(MatA[ij]*MatB[ij])
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsr), | intent(in) | :: | matB | Matrix B.  | 
  
||
| real(kind=NTREAL), | intent(out) | :: | product | Dot product.  | 
  
Product = sum(MatA^H[ij]*MatB[ij])
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsc), | intent(in) | :: | matB | Matrix B.  | 
  
||
| complex(kind=NTCOMPLEX), | intent(out) | :: | product | Dot product.  | 
  
Pairwise Multiply two matrices. This will utilize the sparse vector pairwise multiply routine.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsr), | intent(in) | :: | matB | Matrix B.  | 
  
||
| type(Matrix_lsr), | intent(inout) | :: | matC | matC = MatA mult MatB.  | 
  
Pairwise Multiply two matrices. This will utilize the sparse vector pairwise routine.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsc), | intent(in) | :: | matB | Matrix B.  | 
  
||
| type(Matrix_lsc), | intent(inout) | :: | matC | matC = MatA mult MatB.  | 
  
Multiply two matrices together, and add to the third. C := alphamatAop( matB ) + beta*matC
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsr), | intent(in) | :: | matB | Matrix B.  | 
  
||
| type(Matrix_lsr), | intent(inout) | :: | matC | matC = alphamatAop( matB ) + beta*matC.  | 
  
||
| logical, | intent(in), | optional | :: | IsATransposed_in | True if A is already transposed.  | 
  
|
| logical, | intent(in), | optional | :: | IsBTransposed_in | True if B is already transposed.  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | alpha_in | Scales the multiplication.  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | beta_in | Scales matrix we sum on to.  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | threshold_in | For flushing values to zero. Default value is 0.0.  | 
  
|
| type(MatrixMemoryPool_lr), | intent(inout), | optional | TARGET | :: | blocked_memory_pool_in | An optional memory pool for doing the calculation.  | 
  
Multiply two matrices together, and add to the third. C := alphamatAop( matB ) + beta*matC
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(in) | :: | matA | Matrix A.  | 
  
||
| type(Matrix_lsc), | intent(in) | :: | matB | Matrix B.  | 
  
||
| type(Matrix_lsc), | intent(inout) | :: | matC | matC = alphamatAop( matB ) + beta*matC.  | 
  
||
| logical, | intent(in), | optional | :: | IsATransposed_in | True if A is already transposed.  | 
  
|
| logical, | intent(in), | optional | :: | IsBTransposed_in | True if B is already transposed.  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | alpha_in | Scales the multiplication.  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | beta_in | Scales matrix we sum on to.  | 
  
|
| real(kind=NTREAL), | intent(in), | optional | :: | threshold_in | For flushing values to zero. Default value is 0.0.  | 
  
|
| type(MatrixMemoryPool_lc), | intent(inout), | optional | TARGET | :: | blocked_memory_pool_in | An optional memory pool for doing the calculation.  | 
  
Compute the norm of a sparse matrix along the columns.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(in) | :: | this | The matrix to compute the norm of.  | 
  
||
| real(kind=NTREAL), | intent(out), | DIMENSION(this%columns) | :: | norm_per_column | The norm value for each column in this matrix.  | 
  
Compute the norm of a sparse matrix along the columns.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(in) | :: | this | The matrix to compute the norm of.  | 
  
||
| real(kind=NTREAL), | intent(out), | DIMENSION(this%columns) | :: | norm_per_column | The norm value for each column in this matrix.  | 
  
Compute the 1 norm of a sparse matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(in) | :: | this | The matrix to compute the norm of.  | 
  
The norm of the matrix.
Compute the 1 norm of a sparse matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(in) | :: | this | The matrix to compute the norm of.  | 
  
The norm of the matrix.
Sum the elements of a matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsr), | intent(in) | :: | this | The matrix to sum  | 
  
||
| real(kind=NTREAL), | intent(out) | :: | sum_value | The sum of the matrix elements  | 
  
Sum the elements of a matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Matrix_lsc), | intent(in) | :: | this | The matrix to sum  | 
  
||
| complex(kind=NTCOMPLEX), | intent(out) | :: | sum_value | The sum of the matrix elements  |