stdlib_specialmatrices#

See also the specification page: stdlib_specialmatrices.

stdlib_specialmatrices (module)#

Provides derived-types and associated specialized linear algebra drivers for highly-structured matrices commonly encountered in the discretization of partial differential equations, as well as control and signal processing applications. (Specification: stdlib_specialmatrices)

Types

tridiagonal_sp_type (type)#

tridiagonal_sp_type (type)

Base type to define a tridiagonal matrix.

tridiagonal_dp_type (type)#

tridiagonal_dp_type (type)

Base type to define a tridiagonal matrix.

tridiagonal_csp_type (type)#

tridiagonal_csp_type (type)

Base type to define a tridiagonal matrix.

tridiagonal_cdp_type (type)#

tridiagonal_cdp_type (type)

Base type to define a tridiagonal matrix.

sym_tridiagonal_sp_type (type)#

sym_tridiagonal_sp_type (type)

Base type to define a symmetric tridiagonal matrix.

sym_tridiagonal_dp_type (type)#

sym_tridiagonal_dp_type (type)

Base type to define a symmetric tridiagonal matrix.

sym_tridiagonal_csp_type (type)#

sym_tridiagonal_csp_type (type)

Base type to define a symmetric tridiagonal matrix.

sym_tridiagonal_cdp_type (type)#

sym_tridiagonal_cdp_type (type)

Base type to define a symmetric tridiagonal matrix.

Interfaces

tridiagonal (interface)#

tridiagonal (interface)

(Specification: stdlib_specialmatrices) This interface provides different methods to construct a tridiagonal matrix. Only the non-zero elements of \(A\) are stored, i.e.

\[\begin{split}A = \begin{bmatrix} a_1 & b_1 \\ c_1 & a_2 & b_2 \\ & \ddots & \ddots & \ddots \\ & & c_{n-2} & a_{n-1} & b_{n-1} \\ & & & c_{n-1} & a_n \end{bmatrix}.\end{split}\]
Procedures:
pure module function initialize_tridiagonal_pure_sp(dl, dv, du) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlreal(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvreal(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

dureal(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

Returns:
Atype(tridiagonal_sp_type)

Corresponding Tridiagonal matrix.

pure module function initialize_constant_tridiagonal_pure_sp(dl, dv, du, n) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlreal(kind=sp), intent(in)

Tridiagonal matrix elements.

dvreal(kind=sp), intent(in)

Tridiagonal matrix elements.

dureal(kind=sp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(tridiagonal_sp_type)

Corresponding Tridiagonal matrix.

module function initialize_tridiagonal_impure_sp(dl, dv, du, err) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlreal(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvreal(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

dureal(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_sp_type)

Corresponding Tridiagonal matrix.

module function initialize_constant_tridiagonal_impure_sp(dl, dv, du, n, err) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlreal(kind=sp), intent(in)

Tridiagonal matrix elements.

dvreal(kind=sp), intent(in)

Tridiagonal matrix elements.

dureal(kind=sp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_sp_type)

Corresponding Tridiagonal matrix.

pure module function initialize_tridiagonal_pure_dp(dl, dv, du) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlreal(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvreal(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

dureal(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

Returns:
Atype(tridiagonal_dp_type)

Corresponding Tridiagonal matrix.

pure module function initialize_constant_tridiagonal_pure_dp(dl, dv, du, n) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlreal(kind=dp), intent(in)

Tridiagonal matrix elements.

dvreal(kind=dp), intent(in)

Tridiagonal matrix elements.

dureal(kind=dp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(tridiagonal_dp_type)

Corresponding Tridiagonal matrix.

module function initialize_tridiagonal_impure_dp(dl, dv, du, err) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlreal(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvreal(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

dureal(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_dp_type)

Corresponding Tridiagonal matrix.

module function initialize_constant_tridiagonal_impure_dp(dl, dv, du, n, err) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlreal(kind=dp), intent(in)

Tridiagonal matrix elements.

dvreal(kind=dp), intent(in)

Tridiagonal matrix elements.

dureal(kind=dp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_dp_type)

Corresponding Tridiagonal matrix.

pure module function initialize_tridiagonal_pure_csp(dl, dv, du) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlcomplex(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

ducomplex(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

Returns:
Atype(tridiagonal_csp_type)

Corresponding Tridiagonal matrix.

pure module function initialize_constant_tridiagonal_pure_csp(dl, dv, du, n) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlcomplex(kind=sp), intent(in)

Tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in)

Tridiagonal matrix elements.

ducomplex(kind=sp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(tridiagonal_csp_type)

Corresponding Tridiagonal matrix.

module function initialize_tridiagonal_impure_csp(dl, dv, du, err) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlcomplex(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

ducomplex(kind=sp), intent(in), dimension(:)

Tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_csp_type)

Corresponding Tridiagonal matrix.

module function initialize_constant_tridiagonal_impure_csp(dl, dv, du, n, err) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlcomplex(kind=sp), intent(in)

Tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in)

Tridiagonal matrix elements.

ducomplex(kind=sp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_csp_type)

Corresponding Tridiagonal matrix.

pure module function initialize_tridiagonal_pure_cdp(dl, dv, du) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlcomplex(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

ducomplex(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

Returns:
Atype(tridiagonal_cdp_type)

Corresponding Tridiagonal matrix.

pure module function initialize_constant_tridiagonal_pure_cdp(dl, dv, du, n) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlcomplex(kind=dp), intent(in)

Tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in)

Tridiagonal matrix elements.

ducomplex(kind=dp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(tridiagonal_cdp_type)

Corresponding Tridiagonal matrix.

module function initialize_tridiagonal_impure_cdp(dl, dv, du, err) -> A#

Construct a tridiagonal matrix from the rank-1 arrays dl, dv and du.

Arguments:
dlcomplex(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

ducomplex(kind=dp), intent(in), dimension(:)

Tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_cdp_type)

Corresponding Tridiagonal matrix.

module function initialize_constant_tridiagonal_impure_cdp(dl, dv, du, n, err) -> A#

Construct a tridiagonal matrix with scalar elements.

Arguments:
dlcomplex(kind=dp), intent(in)

Tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in)

Tridiagonal matrix elements.

ducomplex(kind=dp), intent(in)

Tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error handling.

Returns:
Atype(tridiagonal_cdp_type)

Corresponding Tridiagonal matrix.

Syntax

  • Construct a real tridiagonal matrix from rank-1 arrays:

integer, parameter :: n
real(dp), allocatable :: dl(:), dv(:), du(:)
type(tridiagonal_rdp_type) :: A
integer :: i

dl = [(i, i=1, n-1)]
dv = [(2*i, i=1, n)]
du = [(3*i, i=1, n)]
A = Tridiagonal(dl, dv, du)
  • Construct a real tridiagonal matrix with constant diagonals:

integer, parameter :: n
real(dp), parameter :: a = 1.0_dp, b = 1.0_dp, c = 2.0_dp
type(tridiagonal_rdp_type) :: A

A = Tridiagonal(a, b, c, n)

sym_tridiagonal (interface)#

sym_tridiagonal (interface)

(Specification: stdlib_specialmatrices) This interface provides different methods to construct a symmetric tridiagonal matrix. Only the non-zero elements of \(A\) are stored, i.e.

\[\begin{split}A = \begin{bmatrix} a_1 & b_1 \\ b_1 & a_2 & b_2 \\ & \ddots & \ddots & \ddots \\ & & b_{n-2} & a_{n-1} & b_{n-1} \\ & & & b_{n-1} & a_n \end{bmatrix}.\end{split}\]
Procedures:
pure module function initialize_sym_tridiagonal_pure_sp(du, dv) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
dureal(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvreal(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

Returns:
Atype(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.

pure module function initialize_constant_sym_tridiagonal_pure_sp(du, dv, n) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
dureal(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

dvreal(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_sym_tridiagonal_impure_sp(du, dv, err) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
dureal(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvreal(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_constant_sym_tridiagonal_impure_sp(du, dv, n, err) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
dureal(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

dvreal(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.

pure module function initialize_sym_tridiagonal_pure_dp(du, dv) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
dureal(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvreal(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

Returns:
Atype(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

pure module function initialize_constant_sym_tridiagonal_pure_dp(du, dv, n) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
dureal(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

dvreal(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_sym_tridiagonal_impure_dp(du, dv, err) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
dureal(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvreal(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_constant_sym_tridiagonal_impure_dp(du, dv, n, err) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
dureal(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

dvreal(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

pure module function initialize_sym_tridiagonal_pure_csp(du, dv) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
ducomplex(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

Returns:
Atype(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

pure module function initialize_constant_sym_tridiagonal_pure_csp(du, dv, n) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
ducomplex(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_sym_tridiagonal_impure_csp(du, dv, err) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
ducomplex(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_constant_sym_tridiagonal_impure_csp(du, dv, n, err) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
ducomplex(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=sp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

pure module function initialize_sym_tridiagonal_pure_cdp(du, dv) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
ducomplex(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

Returns:
Atype(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

pure module function initialize_constant_sym_tridiagonal_pure_cdp(du, dv, n) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
ducomplex(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

Returns:
Atype(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_sym_tridiagonal_impure_cdp(du, dv, err) -> A#

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments:
ducomplex(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in), dimension(:)

Symmetric tridiagonal matrix elements.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

module function initialize_constant_sym_tridiagonal_impure_cdp(du, dv, n, err) -> A#

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments:
ducomplex(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

dvcomplex(kind=dp), intent(in)

Symmetric tridiagonal matrix elements.

ninteger(kind=ilp), intent(in)

Matrix dimension.

errtype(linalg_state_type), intent(out)

Error Handling.

Returns:
Atype(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

Syntax

  • Construct a real symmetric tridiagonal matrix from rank-1 arrays:

integer, parameter :: n
real(dp), allocatable :: du(:), dv(:)
type(sym_tridiagonal_rdp_type) :: A
integer :: i

du = [(i, i=1, n-1)]
dv = [(2*i, i=1, n)]
A = sym_tridiagonal(du, dv)
  • Construct a real symmetric tridiagonal matrix with constant diagonals:

integer, parameter :: n
real(dp), parameter :: a = 1.0_dp, b = 1.0_dp
type(sym_tridiagonal_rdp_type) :: A

A = sym_tridiagonal(a, b, n)

spmv (interface)#

spmv (interface)

(Specifications: stdlib_specialmatrices) This interface provides methods to compute the matrix-vector product

$$ y = alpha mathrm{op}(A) x + beta y$$

for the different matrix types defined by stdlib_specialmatrices.

Procedures:
module subroutine spmv_tridiag_1d_sp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_sp_type), intent(in)
xreal(kind=sp), contiguous, target, intent(in), dimension(:)
yreal(kind=sp), contiguous, target, intent(inout), dimension(:)
alphareal(kind=sp), intent(in), optional
betareal(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_tridiag_2d_sp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_sp_type), intent(in)
xreal(kind=sp), contiguous, target, (:, :), intent(in), dimension(:,:)
yreal(kind=sp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphareal(kind=sp), intent(in), optional
betareal(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_tridiag_1d_dp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_dp_type), intent(in)
xreal(kind=dp), contiguous, target, intent(in), dimension(:)
yreal(kind=dp), contiguous, target, intent(inout), dimension(:)
alphareal(kind=dp), intent(in), optional
betareal(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_tridiag_2d_dp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_dp_type), intent(in)
xreal(kind=dp), contiguous, target, (:, :), intent(in), dimension(:,:)
yreal(kind=dp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphareal(kind=dp), intent(in), optional
betareal(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_tridiag_1d_csp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_csp_type), intent(in)
xcomplex(kind=sp), contiguous, target, intent(in), dimension(:)
ycomplex(kind=sp), contiguous, target, intent(inout), dimension(:)
alphacomplex(kind=sp), intent(in), optional
betacomplex(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_tridiag_2d_csp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_csp_type), intent(in)
xcomplex(kind=sp), contiguous, target, (:, :), intent(in), dimension(:,:)
ycomplex(kind=sp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphacomplex(kind=sp), intent(in), optional
betacomplex(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_tridiag_1d_cdp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_cdp_type), intent(in)
xcomplex(kind=dp), contiguous, target, intent(in), dimension(:)
ycomplex(kind=dp), contiguous, target, intent(inout), dimension(:)
alphacomplex(kind=dp), intent(in), optional
betacomplex(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_tridiag_2d_cdp(A, x, y, alpha, beta, op)#
Arguments:
Atype(tridiagonal_cdp_type), intent(in)
xcomplex(kind=dp), contiguous, target, (:, :), intent(in), dimension(:,:)
ycomplex(kind=dp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphacomplex(kind=dp), intent(in), optional
betacomplex(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_1d_sp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)
xreal(kind=sp), contiguous, target, intent(in), dimension(:)
yreal(kind=sp), contiguous, target, intent(inout), dimension(:)
alphareal(kind=sp), intent(in), optional
betareal(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_2d_sp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)
xreal(kind=sp), contiguous, target, (:, :), intent(in), dimension(:,:)
yreal(kind=sp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphareal(kind=sp), intent(in), optional
betareal(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_1d_dp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)
xreal(kind=dp), contiguous, target, intent(in), dimension(:)
yreal(kind=dp), contiguous, target, intent(inout), dimension(:)
alphareal(kind=dp), intent(in), optional
betareal(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_2d_dp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)
xreal(kind=dp), contiguous, target, (:, :), intent(in), dimension(:,:)
yreal(kind=dp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphareal(kind=dp), intent(in), optional
betareal(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_1d_csp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)
xcomplex(kind=sp), contiguous, target, intent(in), dimension(:)
ycomplex(kind=sp), contiguous, target, intent(inout), dimension(:)
alphacomplex(kind=sp), intent(in), optional
betacomplex(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_2d_csp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)
xcomplex(kind=sp), contiguous, target, (:, :), intent(in), dimension(:,:)
ycomplex(kind=sp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphacomplex(kind=sp), intent(in), optional
betacomplex(kind=sp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_1d_cdp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)
xcomplex(kind=dp), contiguous, target, intent(in), dimension(:)
ycomplex(kind=dp), contiguous, target, intent(inout), dimension(:)
alphacomplex(kind=dp), intent(in), optional
betacomplex(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional
module subroutine spmv_sym_tridiag_2d_cdp(A, x, y, alpha, beta, op)#
Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)
xcomplex(kind=dp), contiguous, target, (:, :), intent(in), dimension(:,:)
ycomplex(kind=dp), contiguous, target, (:, :), intent(inout), dimension(:,:)
alphacomplex(kind=dp), intent(in), optional
betacomplex(kind=dp), intent(in), optional
opcharacter(len=1), intent(in), optional

dense (interface)#

dense (interface)

This interface provides methods to convert a matrix of one of the types defined by stdlib_specialmatrices to a standard rank-2 array. (Specifications: stdlib_specialmatrices)

Procedures:
pure module function tridiagonal_to_dense_sp(A) -> B#

Convert a tridiagonal matrix to its dense representation.

Arguments:
Atype(tridiagonal_sp_type), intent(in)

Input Tridiagonal matrix.

Returns:
Breal(kind=sp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

pure module function tridiagonal_to_dense_dp(A) -> B#

Convert a tridiagonal matrix to its dense representation.

Arguments:
Atype(tridiagonal_dp_type), intent(in)

Input Tridiagonal matrix.

Returns:
Breal(kind=dp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

pure module function tridiagonal_to_dense_csp(A) -> B#

Convert a tridiagonal matrix to its dense representation.

Arguments:
Atype(tridiagonal_csp_type), intent(in)

Input Tridiagonal matrix.

Returns:
Bcomplex(kind=sp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

pure module function tridiagonal_to_dense_cdp(A) -> B#

Convert a tridiagonal matrix to its dense representation.

Arguments:
Atype(tridiagonal_cdp_type), intent(in)

Input Tridiagonal matrix.

Returns:
Bcomplex(kind=dp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

pure module function sym_tridiagonal_to_dense_sp(A) -> B#

Convert a symmetric tridiagonal matrix to its dense representation.

Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)

Input Symmetric tridiagonal matrix.

Returns:
Breal(kind=sp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

pure module function sym_tridiagonal_to_dense_dp(A) -> B#

Convert a symmetric tridiagonal matrix to its dense representation.

Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)

Input Symmetric tridiagonal matrix.

Returns:
Breal(kind=dp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

pure module function sym_tridiagonal_to_dense_csp(A) -> B#

Convert a symmetric tridiagonal matrix to its dense representation.

Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)

Input Symmetric tridiagonal matrix.

Returns:
Bcomplex(kind=sp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

pure module function sym_tridiagonal_to_dense_cdp(A) -> B#

Convert a symmetric tridiagonal matrix to its dense representation.

Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)

Input Symmetric tridiagonal matrix.

Returns:
Bcomplex(kind=dp), allocatable, (:, :), dimension(:,:)

Corresponding dense matrix.

transpose (interface)#

transpose (interface)

This interface provides methods to compute the transpose operation for the different matrix types defined by stdlib_specialmatrices. Specifications: stdlib_specialmatrices

Procedures:
pure module function transpose_tridiagonal_sp(A) -> B#
Arguments:
Atype(tridiagonal_sp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_sp_type)
pure module function transpose_tridiagonal_dp(A) -> B#
Arguments:
Atype(tridiagonal_dp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_dp_type)
pure module function transpose_tridiagonal_csp(A) -> B#
Arguments:
Atype(tridiagonal_csp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_csp_type)
pure module function transpose_tridiagonal_cdp(A) -> B#
Arguments:
Atype(tridiagonal_cdp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_cdp_type)
pure module function transpose_sym_tridiagonal_sp(A) -> B#
Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_sp_type)
pure module function transpose_sym_tridiagonal_dp(A) -> B#
Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_dp_type)
pure module function transpose_sym_tridiagonal_csp(A) -> B#
Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_csp_type)
pure module function transpose_sym_tridiagonal_cdp(A) -> B#
Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_cdp_type)

hermitian (interface)#

hermitian (interface)

This interface provides methods to compute the hermitian operation for the different matrix types defined by stdlib_specialmatrices. For real-valued matrices, this is equivalent to the standard transpose. Specifications: stdlib_specialmatrices

Procedures:
pure module function hermitian_tridiagonal_sp(A) -> B#
Arguments:
Atype(tridiagonal_sp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_sp_type)
pure module function hermitian_tridiagonal_dp(A) -> B#
Arguments:
Atype(tridiagonal_dp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_dp_type)
pure module function hermitian_tridiagonal_csp(A) -> B#
Arguments:
Atype(tridiagonal_csp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_csp_type)
pure module function hermitian_tridiagonal_cdp(A) -> B#
Arguments:
Atype(tridiagonal_cdp_type), intent(in)

Input matrix.

Returns:
Btype(tridiagonal_cdp_type)
pure module function hermitian_sym_tridiagonal_sp(A) -> B#
Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_sp_type)
pure module function hermitian_sym_tridiagonal_dp(A) -> B#
Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_dp_type)
pure module function hermitian_sym_tridiagonal_csp(A) -> B#
Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_csp_type)
pure module function hermitian_sym_tridiagonal_cdp(A) -> B#
Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)

Input matrix.

Returns:
Btype(sym_tridiagonal_cdp_type)

operator(*) (interface)#

operator(*) (interface)

Overload the * for scalar-matrix multiplications for the different matrix types provided by stdlib_specialmatrices. Specifications: stdlib_specialmatrices

Procedures:
pure module function scalar_multiplication_tridiagonal_sp(alpha, A) -> B#
Arguments:
alphareal(kind=sp), intent(in)
Atype(tridiagonal_sp_type), intent(in)
Returns:
Btype(tridiagonal_sp_type)
pure module function scalar_multiplication_bis_tridiagonal_sp(A, alpha) -> B#
Arguments:
Atype(tridiagonal_sp_type), intent(in)
alphareal(kind=sp), intent(in)
Returns:
Btype(tridiagonal_sp_type)
pure module function scalar_multiplication_tridiagonal_dp(alpha, A) -> B#
Arguments:
alphareal(kind=dp), intent(in)
Atype(tridiagonal_dp_type), intent(in)
Returns:
Btype(tridiagonal_dp_type)
pure module function scalar_multiplication_bis_tridiagonal_dp(A, alpha) -> B#
Arguments:
Atype(tridiagonal_dp_type), intent(in)
alphareal(kind=dp), intent(in)
Returns:
Btype(tridiagonal_dp_type)
pure module function scalar_multiplication_tridiagonal_csp(alpha, A) -> B#
Arguments:
alphacomplex(kind=sp), intent(in)
Atype(tridiagonal_csp_type), intent(in)
Returns:
Btype(tridiagonal_csp_type)
pure module function scalar_multiplication_bis_tridiagonal_csp(A, alpha) -> B#
Arguments:
Atype(tridiagonal_csp_type), intent(in)
alphacomplex(kind=sp), intent(in)
Returns:
Btype(tridiagonal_csp_type)
pure module function scalar_multiplication_tridiagonal_cdp(alpha, A) -> B#
Arguments:
alphacomplex(kind=dp), intent(in)
Atype(tridiagonal_cdp_type), intent(in)
Returns:
Btype(tridiagonal_cdp_type)
pure module function scalar_multiplication_bis_tridiagonal_cdp(A, alpha) -> B#
Arguments:
Atype(tridiagonal_cdp_type), intent(in)
alphacomplex(kind=dp), intent(in)
Returns:
Btype(tridiagonal_cdp_type)
pure module function scalar_multiplication_sym_tridiagonal_sp(alpha, A) -> B#
Arguments:
alphareal(kind=sp), intent(in)
Atype(sym_tridiagonal_sp_type), intent(in)
Returns:
Btype(sym_tridiagonal_sp_type)
pure module function scalar_multiplication_bis_sym_tridiagonal_sp(A, alpha) -> B#
Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)
alphareal(kind=sp), intent(in)
Returns:
Btype(sym_tridiagonal_sp_type)
pure module function scalar_multiplication_sym_tridiagonal_dp(alpha, A) -> B#
Arguments:
alphareal(kind=dp), intent(in)
Atype(sym_tridiagonal_dp_type), intent(in)
Returns:
Btype(sym_tridiagonal_dp_type)
pure module function scalar_multiplication_bis_sym_tridiagonal_dp(A, alpha) -> B#
Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)
alphareal(kind=dp), intent(in)
Returns:
Btype(sym_tridiagonal_dp_type)
pure module function scalar_multiplication_sym_tridiagonal_csp(alpha, A) -> B#
Arguments:
alphacomplex(kind=sp), intent(in)
Atype(sym_tridiagonal_csp_type), intent(in)
Returns:
Btype(sym_tridiagonal_csp_type)
pure module function scalar_multiplication_bis_sym_tridiagonal_csp(A, alpha) -> B#
Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)
alphacomplex(kind=sp), intent(in)
Returns:
Btype(sym_tridiagonal_csp_type)
pure module function scalar_multiplication_sym_tridiagonal_cdp(alpha, A) -> B#
Arguments:
alphacomplex(kind=dp), intent(in)
Atype(sym_tridiagonal_cdp_type), intent(in)
Returns:
Btype(sym_tridiagonal_cdp_type)
pure module function scalar_multiplication_bis_sym_tridiagonal_cdp(A, alpha) -> B#
Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)
alphacomplex(kind=dp), intent(in)
Returns:
Btype(sym_tridiagonal_cdp_type)

operator(+) (interface)#

operator(+) (interface)

Overload the + operator for matrix-matrix addition. The two matrices need to be of the same type and kind. Specifications: stdlib_specialmatrices

Procedures:
pure module function matrix_add_tridiagonal_sp(A, B) -> C#
Arguments:
Atype(tridiagonal_sp_type), intent(in)
Btype(tridiagonal_sp_type), intent(in)
Returns:
Ctype(tridiagonal_sp_type)
pure module function matrix_add_tridiagonal_dp(A, B) -> C#
Arguments:
Atype(tridiagonal_dp_type), intent(in)
Btype(tridiagonal_dp_type), intent(in)
Returns:
Ctype(tridiagonal_dp_type)
pure module function matrix_add_tridiagonal_csp(A, B) -> C#
Arguments:
Atype(tridiagonal_csp_type), intent(in)
Btype(tridiagonal_csp_type), intent(in)
Returns:
Ctype(tridiagonal_csp_type)
pure module function matrix_add_tridiagonal_cdp(A, B) -> C#
Arguments:
Atype(tridiagonal_cdp_type), intent(in)
Btype(tridiagonal_cdp_type), intent(in)
Returns:
Ctype(tridiagonal_cdp_type)
pure module function matrix_add_sym_tridiagonal_sp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)
Btype(sym_tridiagonal_sp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_sp_type)
pure module function matrix_add_sym_tridiagonal_dp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)
Btype(sym_tridiagonal_dp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_dp_type)
pure module function matrix_add_sym_tridiagonal_csp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)
Btype(sym_tridiagonal_csp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_csp_type)
pure module function matrix_add_sym_tridiagonal_cdp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)
Btype(sym_tridiagonal_cdp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_cdp_type)

operator(-) (interface)#

operator(-) (interface)

Overload the - operator for matrix-matrix subtraction. The two matrices need to be of the same type and kind. Specifications: stdlib_specialmatrices

Procedures:
pure module function matrix_sub_tridiagonal_sp(A, B) -> C#
Arguments:
Atype(tridiagonal_sp_type), intent(in)
Btype(tridiagonal_sp_type), intent(in)
Returns:
Ctype(tridiagonal_sp_type)
pure module function matrix_sub_tridiagonal_dp(A, B) -> C#
Arguments:
Atype(tridiagonal_dp_type), intent(in)
Btype(tridiagonal_dp_type), intent(in)
Returns:
Ctype(tridiagonal_dp_type)
pure module function matrix_sub_tridiagonal_csp(A, B) -> C#
Arguments:
Atype(tridiagonal_csp_type), intent(in)
Btype(tridiagonal_csp_type), intent(in)
Returns:
Ctype(tridiagonal_csp_type)
pure module function matrix_sub_tridiagonal_cdp(A, B) -> C#
Arguments:
Atype(tridiagonal_cdp_type), intent(in)
Btype(tridiagonal_cdp_type), intent(in)
Returns:
Ctype(tridiagonal_cdp_type)
pure module function matrix_sub_sym_tridiagonal_sp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_sp_type), intent(in)
Btype(sym_tridiagonal_sp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_sp_type)
pure module function matrix_sub_sym_tridiagonal_dp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_dp_type), intent(in)
Btype(sym_tridiagonal_dp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_dp_type)
pure module function matrix_sub_sym_tridiagonal_csp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_csp_type), intent(in)
Btype(sym_tridiagonal_csp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_csp_type)
pure module function matrix_sub_sym_tridiagonal_cdp(A, B) -> C#
Arguments:
Atype(sym_tridiagonal_cdp_type), intent(in)
Btype(sym_tridiagonal_cdp_type), intent(in)
Returns:
Ctype(sym_tridiagonal_cdp_type)