stdlib_linalg_blas_s Module



Functions

public pure function stdlib_sasum(n, sx, incx)

SASUM takes the sum of the absolute values. uses unrolled loops for increment equal to one.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: sx(*)
integer(kind=ilp), intent(in) :: incx

Return Value real(kind=sp)

public pure function stdlib_scasum(n, cx, incx)

SCASUM takes the sum of the (|Re(.)| + |Im(.)|)'s of a complex vector and returns a single precision result.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
complex(kind=sp), intent(in) :: cx(*)
integer(kind=ilp), intent(in) :: incx

Return Value real(kind=sp)

public pure function stdlib_scnrm2(n, x, incx)

SCNRM2 returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x*Hx )

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
complex(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx

Return Value real(kind=sp)

public pure function stdlib_sdot(n, sx, incx, sy, incy)

SDOT forms the dot product of two vectors. uses unrolled loops for increments equal to one.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: sx(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: sy(*)
integer(kind=ilp), intent(in) :: incy

Return Value real(kind=sp)

public pure function stdlib_sdsdot(n, sb, sx, incx, sy, incy)

Compute the inner product of two vectors with extended precision accumulation. Returns S.P. result with dot product accumulated in D.P. SDSDOT = SB + sum for I = 0 to N-1 of SX(LX+IINCX)SY(LY+IINCY), where LX = 1 if INCX >= 0, else LX = 1+(1-N)INCX, and LY is defined in a similar way using INCY.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: sb
real(kind=sp), intent(in) :: sx(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: sy(*)
integer(kind=ilp), intent(in) :: incy

Return Value real(kind=sp)

public pure function stdlib_snrm2(n, x, incx)

SNRM2 returns the euclidean norm of a vector via the function name, so that SNRM2 := sqrt( x'*x ).

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx

Return Value real(kind=sp)


Subroutines

public pure subroutine stdlib_saxpy(n, sa, sx, incx, sy, incy)

SAXPY constant times a vector plus a vector. uses unrolled loops for increments equal to one.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: sa
real(kind=sp), intent(in) :: sx(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(inout) :: sy(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_scopy(n, sx, incx, sy, incy)

SCOPY copies a vector, x, to a vector, y. uses unrolled loops for increments equal to 1.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: sx(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(out) :: sy(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_sgbmv(trans, m, n, kl, ku, alpha, a, lda, x, incx, beta, y, incy)

SGBMV performs one of the matrix-vector operations y := alphaAx + betay, or y := alphaATx + betay, where alpha and beta are scalars, x and y are vectors and A is an m by n band matrix, with kl sub-diagonals and ku super-diagonals.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: trans
integer(kind=ilp), intent(in) :: m
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: kl
integer(kind=ilp), intent(in) :: ku
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: y(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)

SGEMM performs one of the matrix-matrix operations C := alphaop( A )op( B ) + betaC, where op( X ) is one of op( X ) = X or op( X ) = X*T, alpha and beta are scalars, and A, B and C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: transa
character(len=1), intent(in) :: transb
integer(kind=ilp), intent(in) :: m
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: k
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: c(ldc,*)
integer(kind=ilp), intent(in) :: ldc

public pure subroutine stdlib_sgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)

SGEMV performs one of the matrix-vector operations y := alphaAx + betay, or y := alphaATx + betay, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: trans
integer(kind=ilp), intent(in) :: m
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: y(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_sger(m, n, alpha, x, incx, y, incy, a, lda)

SGER performs the rank 1 operation A := alphaxy**T + A, where alpha is a scalar, x is an m element vector, y is an n element vector and A is an m by n matrix.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: m
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: y(*)
integer(kind=ilp), intent(in) :: incy
real(kind=sp), intent(inout) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda

public pure subroutine stdlib_srot(n, sx, incx, sy, incy, c, s)

applies a plane rotation.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(inout) :: sx(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(inout) :: sy(*)
integer(kind=ilp), intent(in) :: incy
real(kind=sp), intent(in) :: c
real(kind=sp), intent(in) :: s

public pure subroutine stdlib_srotg(a, b, c, s)

The computation uses the formulas sigma = sgn(a) if |a| > |b| = sgn(b) if |b| >= |a| r = sigmasqrt( a2 + b2 ) c = 1; s = 0 if r = 0 c = a/r; s = b/r if r != 0 The subroutine also computes z = s if |a| > |b|, = 1/c if |b| >= |a| and c != 0 = 1 if c = 0 This allows c and s to be reconstructed from z as follows: If z = 1, set c = 0, s = 1. If |z| < 1, set c = sqrt(1 - z2) and s = z. If |z| > 1, set c = 1/z and s = sqrt( 1 - c*2).

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(inout) :: a
real(kind=sp), intent(inout) :: b
real(kind=sp), intent(out) :: c
real(kind=sp), intent(out) :: s

public pure subroutine stdlib_srotm(n, sx, incx, sy, incy, sparam)

SROTM applies the modified Givens transformation, , to the 2-by-N matrix where indicates transpose. The elements of are in SX(LX+IINCX), I = 0:N-1, where LX = 1 if INCX >= 0, else LX = (-INCX)N, and similarly for SY using LY and INCY. With SPARAM(1)=SFLAG, has one of the following forms:
See SROTMG for a description of data storage in SPARAM.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(inout) :: sx(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(inout) :: sy(*)
integer(kind=ilp), intent(in) :: incy
real(kind=sp), intent(in) :: sparam(5)

public pure subroutine stdlib_srotmg(sd1, sd2, sx1, sy1, sparam)

SROTMG Constructs the modified Givens transformation matrix which zeros the second component of the 2-vector With SPARAM(1)=SFLAG, has one of the following forms:
Locations 2-4 of SPARAM contain SH11, SH21, SH12 and SH22 respectively. (Values of 1.0, -1.0, or 0.0 implied by the value of SPARAM(1) are not stored in SPARAM.) The values of parameters GAMSQ and RGAMSQ may be inexact. This is OK as they are only used for testing the size of DD1 and DD2. All actual scaling of data is done using GAM.

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(inout) :: sd1
real(kind=sp), intent(inout) :: sd2
real(kind=sp), intent(inout) :: sx1
real(kind=sp), intent(in) :: sy1
real(kind=sp), intent(out) :: sparam(5)

public pure subroutine stdlib_ssbmv(uplo, n, k, alpha, a, lda, x, incx, beta, y, incy)

SSBMV performs the matrix-vector operation y := alphaAx + beta*y, where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric band matrix, with k super-diagonals.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: k
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: y(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_sscal(n, sa, sx, incx)

SSCAL scales a vector by a constant. uses unrolled loops for increment equal to 1.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: sa
real(kind=sp), intent(inout) :: sx(*)
integer(kind=ilp), intent(in) :: incx

public pure subroutine stdlib_sspmv(uplo, n, alpha, ap, x, incx, beta, y, incy)

SSPMV performs the matrix-vector operation y := alphaAx + beta*y, where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix, supplied in packed form.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: ap(*)
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: y(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_sspr(uplo, n, alpha, x, incx, ap)

SSPR performs the symmetric rank 1 operation A := alphaxx**T + A, where alpha is a real scalar, x is an n element vector and A is an n by n symmetric matrix, supplied in packed form.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(inout) :: ap(*)

public pure subroutine stdlib_sspr2(uplo, n, alpha, x, incx, y, incy, ap)

SSPR2 performs the symmetric rank 2 operation A := alphaxyT + alphayxT + A, where alpha is a scalar, x and y are n element vectors and A is an n by n symmetric matrix, supplied in packed form.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: y(*)
integer(kind=ilp), intent(in) :: incy
real(kind=sp), intent(inout) :: ap(*)

public pure subroutine stdlib_sswap(n, sx, incx, sy, incy)

SSWAP interchanges two vectors. uses unrolled loops for increments equal to 1.

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(inout) :: sx(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(inout) :: sy(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_ssymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)

SSYMM performs one of the matrix-matrix operations C := alphaAB + betaC, or C := alphaBA + betaC, where alpha and beta are scalars, A is a symmetric matrix and B and C are m by n matrices.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: side
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: m
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: c(ldc,*)
integer(kind=ilp), intent(in) :: ldc

public pure subroutine stdlib_ssymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)

SSYMV performs the matrix-vector operation y := alphaAx + beta*y, where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: y(*)
integer(kind=ilp), intent(in) :: incy

public pure subroutine stdlib_ssyr(uplo, n, alpha, x, incx, a, lda)

SSYR performs the symmetric rank 1 operation A := alphaxx**T + A, where alpha is a real scalar, x is an n element vector and A is an n by n symmetric matrix.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(inout) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda

public pure subroutine stdlib_ssyr2(uplo, n, alpha, x, incx, y, incy, a, lda)

SSYR2 performs the symmetric rank 2 operation A := alphaxyT + alphayxT + A, where alpha is a scalar, x and y are n element vectors and A is an n by n symmetric matrix.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: x(*)
integer(kind=ilp), intent(in) :: incx
real(kind=sp), intent(in) :: y(*)
integer(kind=ilp), intent(in) :: incy
real(kind=sp), intent(inout) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda

public pure subroutine stdlib_ssyr2k(uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)

SSYR2K performs one of the symmetric rank 2k operations C := alphaABT + alphaBAT + betaC, or C := alphaATB + alphaBTA + betaC, where alpha and beta are scalars, C is an n by n symmetric matrix and A and B are n by k matrices in the first case and k by n matrices in the second case.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: k
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: c(ldc,*)
integer(kind=ilp), intent(in) :: ldc

public pure subroutine stdlib_ssyrk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)

SSYRK performs one of the symmetric rank k operations C := alphaAAT + betaC, or C := alphaATA + betaC, where alpha and beta are scalars, C is an n by n symmetric matrix and A is an n by k matrix in the first case and a k by n matrix in the second case.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: k
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(in) :: beta
real(kind=sp), intent(inout) :: c(ldc,*)
integer(kind=ilp), intent(in) :: ldc

public pure subroutine stdlib_stbmv(uplo, trans, diag, n, k, a, lda, x, incx)

STBMV performs one of the matrix-vector operations x := Ax, or x := ATx, where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular band matrix, with ( k + 1 ) diagonals.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: k
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(inout) :: x(*)
integer(kind=ilp), intent(in) :: incx

public pure subroutine stdlib_stbsv(uplo, trans, diag, n, k, a, lda, x, incx)

STBSV solves one of the systems of equations Ax = b, or ATx = b, where b and x are n element vectors and A is an n by n unit, or non-unit, upper or lower triangular band matrix, with ( k + 1 ) diagonals. No test for singularity or near-singularity is included in this routine. Such tests must be performed before calling this routine.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: n
integer(kind=ilp), intent(in) :: k
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(inout) :: x(*)
integer(kind=ilp), intent(in) :: incx

public pure subroutine stdlib_stpmv(uplo, trans, diag, n, ap, x, incx)

STPMV performs one of the matrix-vector operations x := Ax, or x := ATx, where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular matrix, supplied in packed form.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: ap(*)
real(kind=sp), intent(inout) :: x(*)
integer(kind=ilp), intent(in) :: incx

public pure subroutine stdlib_stpsv(uplo, trans, diag, n, ap, x, incx)

STPSV solves one of the systems of equations Ax = b, or ATx = b, where b and x are n element vectors and A is an n by n unit, or non-unit, upper or lower triangular matrix, supplied in packed form. No test for singularity or near-singularity is included in this routine. Such tests must be performed before calling this routine.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: ap(*)
real(kind=sp), intent(inout) :: x(*)
integer(kind=ilp), intent(in) :: incx

public pure subroutine stdlib_strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)

STRMM performs one of the matrix-matrix operations B := alphaop( A )B, or B := alphaBop( A ), where alpha is a scalar, B is an m by n matrix, A is a unit, or non-unit, upper or lower triangular matrix and op( A ) is one of op( A ) = A or op( A ) = A**T.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: side
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: transa
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: m
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(inout) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb

public pure subroutine stdlib_strmv(uplo, trans, diag, n, a, lda, x, incx)

STRMV performs one of the matrix-vector operations x := Ax, or x := ATx, where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular matrix.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(inout) :: x(*)
integer(kind=ilp), intent(in) :: incx

public pure subroutine stdlib_strsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)

STRSM solves one of the matrix equations op( A )X = alphaB, or Xop( A ) = alphaB, where alpha is a scalar, X and B are m by n matrices, A is a unit, or non-unit, upper or lower triangular matrix and op( A ) is one of op( A ) = A or op( A ) = A**T. The matrix X is overwritten on B.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: side
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: transa
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: m
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: alpha
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(inout) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb

public pure subroutine stdlib_strsv(uplo, trans, diag, n, a, lda, x, incx)

STRSV solves one of the systems of equations Ax = b, or ATx = b, where b and x are n element vectors and A is an n by n unit, or non-unit, upper or lower triangular matrix. No test for singularity or near-singularity is included in this routine. Such tests must be performed before calling this routine.

Arguments

Type IntentOptional Attributes Name
character(len=1), intent(in) :: uplo
character(len=1), intent(in) :: trans
character(len=1), intent(in) :: diag
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(in) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(inout) :: x(*)
integer(kind=ilp), intent(in) :: incx