diag_mtx_mult Interface

public interface diag_mtx_mult

An interface to the diagonal matrix multiplication routines.


Module Procedures

private subroutine diag_mtx_mult_mtx(lside, trans, alpha, a, b, beta, c, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

logical, intent(in) :: trans

A logical flag indicating if the matrix should be transposed.

real(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

real(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

real(kind=real64), intent(in), dimension(:,:) :: b

The matrix in the operation.

real(kind=real64), intent(in) :: beta

The scalar to multiply the matrix .

real(kind=real64), intent(inout), dimension(:,:) :: c

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_mult_mtx2(lside, alpha, a, b, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

real(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

real(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

real(kind=real64), intent(inout), dimension(:,:) :: b

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_mult_mtx3(lside, trans, alpha, a, b, beta, c, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

logical, intent(in) :: trans

A logical flag indicating if the matrix should be transposed.

real(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

complex(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

real(kind=real64), intent(in), dimension(:,:) :: b

The matrix in the operation.

real(kind=real64), intent(in) :: beta

The scalar to multiply the matrix .

complex(kind=real64), intent(inout), dimension(:,:) :: c

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_mult_mtx4(lside, opb, alpha, a, b, beta, c, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

integer(kind=int32), intent(in) :: opb

An integer flag indicating the operation to perform on matrix . Possible options are:

  • LA_NO_OPERATION: No operation is performed on matrix.

  • LA_TRANSPOSE: The transpose of matrix is used.

  • LA_HERMITIAN_TRANSPOSE: The Hermitian transpose of matrix is used.

real(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

complex(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

complex(kind=real64), intent(in), dimension(:,:) :: b

The matrix in the operation.

real(kind=real64), intent(in) :: beta

The scalar to multiply the matrix .

complex(kind=real64), intent(inout), dimension(:,:) :: c

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_mult_mtx_cmplx(lside, opb, alpha, a, b, beta, c, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

integer(kind=int32), intent(in) :: opb

An integer flag indicating the operation to perform on matrix . Possible options are:

  • LA_NO_OPERATION: No operation is performed on matrix.

  • LA_TRANSPOSE: The transpose of matrix is used.

  • LA_HERMITIAN_TRANSPOSE: The Hermitian transpose of matrix is used.

complex(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

complex(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

complex(kind=real64), intent(in), dimension(:,:) :: b

The matrix in the operation.

complex(kind=real64), intent(in) :: beta

The scalar to multiply the matrix .

complex(kind=real64), intent(inout), dimension(:,:) :: c

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_mult_mtx2_cmplx(lside, alpha, a, b, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

complex(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

complex(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

complex(kind=real64), intent(inout), dimension(:,:) :: b

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_mult_mtx_mix(lside, opb, alpha, a, b, beta, c, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

integer(kind=int32), intent(in) :: opb

An integer flag indicating the operation to perform on matrix . Possible options are:

  • LA_NO_OPERATION: No operation is performed on matrix.

  • LA_TRANSPOSE: The transpose of matrix is used.

  • LA_HERMITIAN_TRANSPOSE: The Hermitian transpose of matrix is used.

complex(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

real(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

complex(kind=real64), intent(in), dimension(:,:) :: b

The matrix in the operation.

complex(kind=real64), intent(in) :: beta

The scalar to multiply the matrix .

complex(kind=real64), intent(inout), dimension(:,:) :: c

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_mult_mtx2_mix(lside, alpha, a, b, err)

Performs the matrix operation or where is a diagonal matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

A logical flag indicating if the diagonal matrix is on the left.

complex(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

real(kind=real64), intent(in), dimension(:) :: a

The diagonal matrix in the operation.

complex(kind=real64), intent(inout), dimension(:,:) :: b

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine diag_mtx_sparse_mult(lside, alpha, a, b, err)

Performs the matrix operation or where is a diagonal matrix and is a sparse matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside
real(kind=real64), intent(in) :: alpha
real(kind=real64), intent(in), dimension(:) :: a
class(csr_matrix), intent(inout) :: b
class(errors), intent(inout), optional, target :: err