single_blas_level2(3)

πŸ“¦
version 3.11.0 Β· 2 versions
, in debian bookworm

πŸ’– single_blas_level2(3) πŸ’–

okay bestie, welcome to the LAPACK zone ✨ this is the manual page for single_blas_level2, and it is a lot, so buckle up πŸŽ€


🌸 NAME 🌸

single_blas_level2 β€” real πŸ’…


✨ SYNOPSIS ✨

πŸ¦‹ Functions πŸ¦‹

  • subroutine sgbmv (TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY) β€” SGBMV
  • subroutine sgemv (TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY) β€” SGEMV
  • subroutine sger (M, N, ALPHA, X, INCX, Y, INCY, A, LDA) β€” SGER
  • subroutine ssbmv (UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY) β€” SSBMV
  • subroutine sspmv (UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY) β€” SSPMV
  • subroutine sspr (UPLO, N, ALPHA, X, INCX, AP) β€” SSPR
  • subroutine sspr2 (UPLO, N, ALPHA, X, INCX, Y, INCY, AP) β€” SSPR2
  • subroutine ssymv (UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY) β€” SSYMV
  • subroutine ssyr (UPLO, N, ALPHA, X, INCX, A, LDA) β€” SSYR
  • subroutine ssyr2 (UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA) β€” SSYR2
  • subroutine stbmv (UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX) β€” STBMV
  • subroutine stbsv (UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX) β€” STBSV
  • subroutine stpmv (UPLO, TRANS, DIAG, N, AP, X, INCX) β€” STPMV
  • subroutine stpsv (UPLO, TRANS, DIAG, N, AP, X, INCX) β€” STPSV
  • subroutine strmv (UPLO, TRANS, DIAG, N, A, LDA, X, INCX) β€” STRMV
  • subroutine strsv (UPLO, TRANS, DIAG, N, A, LDA, X, INCX) β€” STRSV

πŸ”₯ Detailed Description πŸ”₯

This is the group of real LEVEL 2 BLAS routines. that's it, that's the whole vibe check 🫢


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’œ sgbmv πŸ’œ

subroutine sgbmv (character TRANS, integer M, integer N, integer KL, integer
    KU, real ALPHA, real, dimension(lda,*) A, integer LDA, real,
    dimension(*) X, integer INCX, real BETA, real, dimension(*) Y, integer
    INCY)

SGBMV

πŸŽ€ Purpose:

SGBMV performs one of the matrix-vector operations

   y := alpha*A*x + beta*y,   or   y := alpha*A**T*x + beta*y,

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. no cap, it's giving banded realness 🌈

🌸 Parameters 🌸

  • TRANS β€” TRANS is CHARACTER*1. On entry, TRANS specifies the operation to be performed as follows:
    • TRANS = 'N' or 'n' β†’ y := alpha*A*x + beta*y.
    • TRANS = 'T' or 't' β†’ y := alpha*A**T*x + beta*y.
    • TRANS = 'C' or 'c' β†’ y := alpha*A**T*x + beta*y.
  • M β€” M is INTEGER. On entry, M specifies the number of rows of the matrix A. M must be at least zero.
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix A. N must be at least zero.
  • KL β€” KL is INTEGER. On entry, KL specifies the number of sub-diagonals of the matrix A. KL must satisfy 0 .le. KL.
  • KU β€” KU is INTEGER. On entry, KU specifies the number of super-diagonals of the matrix A. KU must satisfy 0 .le. KU.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry, the leading ( kl + ku + 1 ) by n part of the array A must contain the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row ( ku + 1 ) of the array, the first super-diagonal starting at position 2 in row ku, the first sub-diagonal starting at position 1 in row ( ku + 2 ), and so on. Elements in the array A that do not correspond to elements in the band matrix (such as the top left ku by ku triangle) are not referenced. The following program segment will transfer a band matrix from conventional full matrix storage to band storage:
      DO 20, J = 1, N
         K = KU + 1 - J
         DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
            A( K + I, J ) = matrix( I, J )
   10    CONTINUE
   20 CONTINUE
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( kl + ku + 1 ).
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. Before entry, the incremented array X must contain the vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. (iconic shortcut honestly ✨)
  • Y β€” Y is REAL array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫

🧚 Author 🧚

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

⭐ Further Details: ⭐

 Level 2 Blas routine.
 The vector and matrix arguments are not referenced when N = 0, or M = 0

 -- Written on 22-October-1986.
    Jack Dongarra, Argonne National Lab.
    Jeremy Du Croz, Nag Central Office.
    Sven Hammarling, Nag Central Office.
    Richard Hanson, Sandia National Labs.

πŸ’œ sgemv πŸ’œ

subroutine sgemv (character TRANS, integer M, integer N, real ALPHA, real,
    dimension(lda,*) A, integer LDA, real, dimension(*) X, integer INCX,
    real BETA, real, dimension(*) Y, integer INCY)

SGEMV

πŸŽ€ Purpose:

SGEMV performs one of the matrix-vector operations

   y := alpha*A*x + beta*y,   or   y := alpha*A**T*x + beta*y,

where alpha and beta are scalars, x and y are vectors and A is an m by n matrix. the classic general matvec, the moment πŸ’…

🌸 Parameters 🌸

  • TRANS β€” TRANS is CHARACTER*1. On entry, TRANS specifies the operation to be performed as follows:
    • TRANS = 'N' or 'n' β†’ y := alpha*A*x + beta*y.
    • TRANS = 'T' or 't' β†’ y := alpha*A**T*x + beta*y.
    • TRANS = 'C' or 'c' β†’ y := alpha*A**T*x + beta*y.
  • M β€” M is INTEGER. On entry, M specifies the number of rows of the matrix A. M must be at least zero.
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry, the leading m by n part of the array A must contain the matrix of coefficients.
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ).
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. Before entry, the incremented array X must contain the vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input.
  • Y β€” Y is REAL array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. Before entry with BETA non-zero, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫

🧚 Author 🧚

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

⭐ Further Details: ⭐

 Level 2 Blas routine.
 The vector and matrix arguments are not referenced when N = 0, or M = 0

 -- Written on 22-October-1986.
    Jack Dongarra, Argonne National Lab.
    Jeremy Du Croz, Nag Central Office.
    Sven Hammarling, Nag Central Office.
    Richard Hanson, Sandia National Labs.

πŸ’œ sger πŸ’œ

subroutine sger (integer M, integer N, real ALPHA, real, dimension(*) X,
    integer INCX, real, dimension(*) Y, integer INCY, real, dimension(lda,*)
    A, integer LDA)

SGER

πŸŽ€ Purpose:

SGER performs the rank 1 operation

   A := alpha*x*y**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. rank-1 update supremacy, it ate πŸ”₯

🌸 Parameters 🌸

  • M β€” M is INTEGER. On entry, M specifies the number of rows of the matrix A. M must be at least zero.
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • X β€” X is REAL array, dimension at least ( 1 + ( m - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the m element vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • Y
  • Y β€” bestie, Y is a REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. It's giving vector realness. πŸ’–
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Zero is not the vibe, periodt. 🚫
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry, the leading m by n part of the array A must contain the matrix of coefficients. On exit, A is overwritten by the updated matrix. She's transformative, bestie. ✨
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ). Respect the minimum, queen. πŸ‘‘

Author

Shoutout to the academic icons behind this masterpiece:

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Further Details:

The lore:

Level 2 Blas routine.

-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.


subroutine ssbmv

subroutine ssbmv (character UPLO, integer N, integer K, real ALPHA, real,
    dimension(lda,*) A, integer LDA, real, dimension(*) X, integer INCX,
    real BETA, real, dimension(*) Y, integer INCY)

SSBMV

Purpose:

Okay so SSBMV performs the matrix-vector operation

y := alpha*A*x + 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. Band matrix? She's got range, bestie. 🌈

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the band matrix A is being supplied as follows:
    • UPLO = 'U' or 'u' β€” The upper triangular part of A is being supplied. Upper slay. πŸ’…
    • UPLO = 'L' or 'l' β€” The lower triangular part of A is being supplied. Lower slay. πŸ’…
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. Zero is valid but don't be negative, it's not cute. 😀
  • K β€” K is INTEGER. On entry, K specifies the number of super-diagonals of the matrix A. K must satisfy 0 .le. K. Keep it non-negative, queen. πŸ‘‘
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha. The main character scalar. ⭐
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry with UPLO = 'U' or 'u', the leading ( k + 1 ) by n part of the array A must contain the upper triangular band part of the symmetric matrix, supplied column by column, with the leading diagonal of the matrix in row ( k + 1 ) of the array, the first super-diagonal starting at position 2 in row k, and so on. The top left k by k triangle of the array A is not referenced. The following program segment will transfer the upper triangular part of a symmetric band matrix from conventional full matrix storage to band storage:
                            DO 20, J = 1, N
                               M = K + 1 - J
                               DO 10, I = MAX( 1, J - K ), J
                                  A( M + I, J ) = matrix( I, J )
                         10    CONTINUE
                         20 CONTINUE

Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the symmetric matrix, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first sub-diagonal starting at position 1 in row 2, and so on. The bottom right k by k triangle of the array A is not referenced. The following program segment will transfer the lower triangular part of a symmetric band matrix from conventional full matrix storage to band storage:

                            DO 20, J = 1, N
                               M = 1 - J
                               DO 10, I = J, MIN( N, J + K )
                                  A( M + I, J ) = matrix( I, J )
                         10    CONTINUE
                         20 CONTINUE
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ). Don't be smaller, it's giving insecurity. πŸ’€
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x. The x factor. πŸ’–
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. No zero increments, periodt. 🚫
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. Another icon. ✨
  • Y β€” Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y. She's changed, bestie. πŸ’…
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Zero is a no. 🚫

Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Further Details:

Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0

-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.


subroutine sspmv

subroutine sspmv (character UPLO, integer N, real ALPHA, real, dimension(*)
    AP, real, dimension(*) X, integer INCX, real BETA, real, dimension(*) Y,
    integer INCY)

SSPMV

Purpose:

SSPMV performs the matrix-vector operation

y := alpha*A*x + 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. Packed form? She's compact and fierce. πŸŽ€

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β€” The upper triangular part of A is supplied in AP. Upper in the pack. πŸ’…
    • UPLO = 'L' or 'l' β€” The lower triangular part of A is supplied in AP. Lower in the pack. πŸ’…
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • AP β€” AP is REAL array, dimension at least ( ( n*( n + 1 ) )/2 ). Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the symmetric matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on.
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. Zero beta means Y can chill, no cap. 😎
  • Y β€” Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero.

Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Further Details:

Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0

-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.


subroutine sspr

subroutine sspr (character UPLO, integer N, real ALPHA, real, dimension(*)
    X, integer INCX, real, dimension(*) AP)

SSPR

Purpose:

SSPR performs the symmetric rank 1 operation

A := alpha*x*x**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. Rank 1 glow up. ✨

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β€” The upper triangular part of A is supplied in AP.
    • UPLO = 'L' or 'l' β€” The lower triangular part of A is supplied in AP.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • X β€”
  • X β€” REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before you go in, the incremented array X has GOT to hold the n element vector x. πŸ’–
  • INCX β€” INTEGER. On entry, INCX is the increment for the elements of X. INCX must not be zero β€” like, do not play with me on this one bestie. πŸ™ˆ
  • AP β€” REAL array, dimension at least ( ( n*( n + 1 ) )/2 ). So here's the tea 🍡: before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric matrix, packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. On exit, the array AP is overwritten by the upper triangular part of the updated matrix. ✨ Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the symmetric matrix, packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. On exit, the array AP is overwritten by the lower triangular part of the updated matrix. πŸ¦‹

🌸 Author 🌸

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ’« Further Details: πŸ’«

Level 2 Blas routine.

-- Written on 22-October-1986.
   Jack Dongarra, Argonne National Lab.
   Jeremy Du Croz, Nag Central Office.
   Sven Hammarling, Nag Central Office.
   Richard Hanson, Sandia National Labs.

πŸ‘‘ subroutine sspr2 (character UPLO, integer N, real ALPHA, real, dimension(*) X, integer INCX, real, dimension(*) Y, integer INCY, real, dimension(*) AP) πŸ‘‘

SSPR2

✨ Purpose: ✨

SSPR2 performs the symmetric rank 2 operation

   A := alpha*x*y**T + alpha*y*x**T + 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. πŸ’…

🌈 Parameters 🌈

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the matrix A is supplied in the packed array AP as follows:
    • UPLO = 'U' or 'u' β€” The upper triangular part of A is supplied in AP. πŸ’–
    • UPLO = 'L' or 'l' β€” The lower triangular part of A is supplied in AP. πŸ’–
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. 🫢
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. 🌸
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • Y β€” Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. 🌸
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫
  • AP β€” AP is REAL array, dimension at least ( ( n*( n + 1 ) )/2 ). Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular part of the symmetric matrix, packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. On exit, the array AP is overwritten by the upper triangular part of the updated matrix. ✨ Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular part of the symmetric matrix, packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. On exit, the array AP is overwritten by the lower triangular part of the updated matrix. πŸ¦‹

🌸 Author 🌸

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ’« Further Details: πŸ’«

Level 2 Blas routine.

-- Written on 22-October-1986.
   Jack Dongarra, Argonne National Lab.
   Jeremy Du Croz, Nag Central Office.
   Sven Hammarling, Nag Central Office.
   Richard Hanson, Sandia National Labs.

πŸ‘‘ subroutine ssymv (character UPLO, integer N, real ALPHA, real, dimension(lda,*) A, integer LDA, real, dimension(*) X, integer INCX, real BETA, real, dimension(*) Y, integer INCY) πŸ‘‘

SSYMV

✨ Purpose: ✨

SSYMV performs the matrix-vector operation

   y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix. πŸŽ€

🌈 Parameters 🌈

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the array A is to be referenced as follows:
    • UPLO = 'U' or 'u' β€” Only the upper triangular part of A is to be referenced. πŸ‘‘
    • UPLO = 'L' or 'l' β€” Only the lower triangular part of A is to be referenced. πŸ‘‘
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. 🫢
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry with UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular part of the symmetric matrix and the strictly lower triangular part of A is not referenced. Before entry with UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular part of the symmetric matrix and the strictly upper triangular part of A is not referenced. πŸ¦‹
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, n ). πŸ’…
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. 🌸
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. 😌
  • Y β€” Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y. πŸ’–
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚫

🌸 Author 🌸

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ’« Further Details: πŸ’«

Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0

-- Written on 22-October-1986.
   Jack Dongarra, Argonne National Lab.
   Jeremy Du Croz, Nag Central Office.
   Sven Hammarling, Nag Central Office.
   Richard Hanson, Sandia National Labs.

πŸ‘‘ subroutine ssyr (character UPLO, integer N, real ALPHA, real, dimension(*) X, integer INCX, real, dimension(lda,*) A, integer LDA) πŸ‘‘

SSYR

✨ Purpose: ✨

SSYR performs the symmetric rank 1 operation

   A := alpha*x*x**T + A,

where alpha is a real scalar, x is an n element vector and A is an n by n symmetric matrix. πŸ”₯

🌈 Parameters 🌈

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the array A is to be referenced as follows:
    • UPLO = 'U' or 'u' β€” Only the upper triangular part of A is to be referenced. πŸ‘‘
    • UPLO = 'L' or 'l' β€” Only the lower triangular part of A is to be referenced. πŸ‘‘
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. 🫢
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. 🌸
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚫
  • A β€” A is REAL array,
  • A β€” okay bestie, listen up πŸ’… A is a REAL array, dimension ( LDA, N ). So like, before you come in with UPLO = 'U' or 'u', the leading n by n upper triangular part of A has to contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part of A is not referenced (so don't even worry about it, it's not the vibe). On exit, the upper triangular part of A gets overwritten by the upper triangular part of the updated matrix. And if you're on team UPLO = 'L' or 'l', then the leading n by n lower triangular part of A must contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part is not referenced. On exit, the lower triangular part gets overwritten by the lower triangular part of the updated matrix. Periodt. πŸ’–
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, n ). No cap. πŸŽ€

Author ✨

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details: 🌸

Level 2 Blas routine.

-- Written on 22-October-1986.
   Jack Dongarra, Argonne National Lab.
   Jeremy Du Croz, Nag Central Office.
   Sven Hammarling, Nag Central Office.
   Richard Hanson, Sandia National Labs.

subroutine ssyr2 ... πŸ’«

subroutine ssyr2 (character UPLO, integer N, real ALPHA, real, dimension(*)
    X, integer INCX, real, dimension(*) Y, integer INCY, real,
    dimension(lda,*) A, integer LDA)

SSYR2

Purpose:

SSYR2 performs the symmetric rank 2 operation

A := alpha*x*y**T + alpha*y*x**T + A,

where alpha is a scalar, x and y are n element vectors and A is an n by n symmetric matrix.

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the array A is to be referenced as follows:
    • UPLO = 'U' or 'u' β€” Only the upper triangular part of A is to be referenced.
    • UPLO = 'L' or 'l' β€” Only the lower triangular part of A is to be referenced.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha.
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
  • Y β€” Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero.
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry with UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular part of the symmetric matrix and the strictly lower triangular part of A is not referenced. On exit, the upper triangular part of the array A is overwritten by the upper triangular part of the updated matrix. Before entry with UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular part of the symmetric matrix and the strictly upper triangular part of A is not referenced. On exit, the lower triangular part of the array A is overwritten by the lower triangular part of the updated matrix.
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, n ).

Author ✨

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details: 🌸

Level 2 Blas routine.

-- Written on 22-October-1986.
   Jack Dongarra, Argonne National Lab.
   Jeremy Du Croz, Nag Central Office.
   Sven Hammarling, Nag Central Office.
   Richard Hanson, Sandia National Labs.

subroutine stbmv ... πŸ¦‹

subroutine stbmv (character UPLO, character TRANS, character DIAG, integer
    N, integer K, real, dimension(lda,*) A, integer LDA, real, dimension(*)
    X, integer INCX)

STBMV

Purpose:

STBMV performs one of the matrix-vector operations

x := A*x,   or   x := A**T*x,

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.

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the matrix is an upper or lower triangular matrix as follows:
    • UPLO = 'U' or 'u' β€” A is an upper triangular matrix.
    • UPLO = 'L' or 'l' β€” A is a lower triangular matrix.
  • TRANS β€” TRANS is CHARACTER*1. On entry, TRANS specifies the operation to be performed as follows:
    • TRANS = 'N' or 'n' β€” x := A*x.
    • TRANS = 'T' or 't' β€” x := A**T*x.
    • TRANS = 'C' or 'c' β€” x := A**T*x.
  • DIAG β€” DIAG is CHARACTER*1. On entry, DIAG specifies whether or not A is unit triangular as follows:
    • DIAG = 'U' or 'u' β€” A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' β€” A is not assumed to be unit triangular.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • K β€” K is INTEGER. On entry with UPLO = 'U' or 'u', K specifies the number of super-diagonals of the matrix A. On entry with UPLO = 'L' or 'l', K specifies the number of sub-diagonals of the matrix A. K must satisfy 0 .le. K.
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry with UPLO = 'U' or 'u', the leading ( k + 1 ) by n part of the array A must contain the upper triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row ( k + 1 ) of the array, the first super-diagonal starting at position 2 in row k, and so on. The top left k by k triangle of the array A is not referenced. The following program segment will transfer an upper triangular band matrix from conventional full matrix storage to band storage:
DO 20, J = 1, N
   M = K + 1 - J
   DO 10, I = MAX( 1, J - K ), J
      A( M + I, J ) = matrix( I, J )
10    CONTINUE
20 CONTINUE

Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first sub-diagonal starting at position 1 in row 2, and so on. The bottom right k by k triangle of the array A is not referenced. The following program segment will transfer a lower triangular band matrix from conventional full matrix storage to band storage:

DO 20, J = 1, N
   M = 1 - J
   DO 10, I = J, MIN( N, J + K )
      A( M + I, J ) = matrix( I, J )
10    CONTINUE
20 CONTINUE

Note that when DIAG = 'U' or 'u' the elements of the array A corresponding to the diagonal elements of the matrix are not referenced, but are assumed to be unity.

  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ).
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. On exit, X is overwritten with the transformed vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.

Author ✨

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details: 🌸

Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0

-- Written on 22-October-1986.
   Jack Dongarra, Argonne National Lab.
   Jeremy Du Croz, Nag Central Office.
   Sven Hammarling, Nag Central Office.
   Richard Hanson, Sandia National Labs.

subroutine stbsv ... πŸ’œ

subroutine stbsv (character UPLO, character TRANS, character DIAG, integer
    N, integer K, real, dimension(lda,*) A, integer LDA, real, dimension(*)
    X, integer INCX)

STBSV

Purpose:

STBSV solves one of the systems of equations

A*x = b,   or   A**T*x = 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.

Parameters 🫢

  • UPLO β€” CHARACTER*1

on entry, UPLO says whether our matrix is upper or lower triangular, like this:

  • UPLO = 'U' or 'u' β€” A is an upper triangular matrix. ⬆️
  • UPLO = 'L' or 'l' β€” A is a lower triangular matrix. ⬇️
  • TRANS β€” CHARACTER*1

on entry, TRANS tells us which equations we're solving, bestie:

  • TRANS = 'N' or 'n' β€” A*x = b.
  • TRANS = 'T' or 't' β€” A**T*x = b.
  • TRANS = 'C' or 'c' β€” A**T*x = b.
  • DIAG β€” CHARACTER*1

on entry, DIAG decides whether A is unit triangular or not:

  • DIAG = 'U' or 'u' β€” A is assumed to be unit triangular.
  • DIAG = 'N' or 'n' β€” A is not assumed to be unit triangular.
  • N β€” INTEGER

on entry, N is the order of the matrix A. N must be at least zero. (Zero is allowed, she's valid πŸ’…)

  • K β€” INTEGER

on entry with UPLO = 'U' or 'u', K is how many super-diagonals the matrix A has.

on entry with UPLO = 'L' or 'l', K is how many sub-diagonals the matrix A has.

K must satisfy 0 .le. K.

  • A β€” REAL array, dimension ( LDA, N )

before entry with UPLO = 'U' or 'u', the leading ( k + 1 ) by n part of the array A must contain the upper triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row ( k + 1 ) of the array, the first super-diagonal starting at position 2 in row k, and so on. The top left k by k triangle of the array A is not referenced β€” she's just vibing, ignore her.

this little program segment transfers an upper triangular band matrix from conventional full matrix storage into band storage:

DO 20, J = 1, N
   M = K + 1 - J
   DO 10, I = MAX( 1, J - K ), J
      A( M + I, J ) = matrix( I, J )
 10    CONTINUE
 20 CONTINUE

before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first sub-diagonal starting at position 1 in row 2, and so on. The bottom right k by k triangle of the array A is not referenced either. iconic, honestly.

and here's the segment that transfers a lower triangular band matrix from conventional full matrix storage into band storage:

DO 20, J = 1, N
   M = 1 - J
   DO 10, I = J, MIN( N, J + K )
      A( M + I, J ) = matrix( I, J )
 10    CONTINUE
 20 CONTINUE
note that when DIAG = 'U' or 'u', the elements of the array A that correspond to the diagonal elements of the matrix are not referenced, but are assumed to be unity. so like… don't bother putting anything there, she's not reading it 🫣
  • LDA β€” INTEGER

on entry, LDA is the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ).

  • X β€” REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) )

before entry, the incremented array X must contain the n element right-hand side vector b. on exit, X is overwritten with the solution vector x. glow up πŸ’«

  • INCX β€” INTEGER

on entry, INCX is the increment for the elements of X. INCX must not be zero. periodt.


Author πŸ‘‘

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Further Details:

Level 2 Blas routine.

-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.


subroutine stpmv (character UPLO, character TRANS, character DIAG, integer N, real, dimension(*) AP, real, dimension(*) X, integer INCX) πŸ¦‹

STPMV

Purpose:

STPMV performs one of the matrix-vector operations

x := A*x,   or   x := A**T*x,

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. no band storage today, we're packing light ✨

Parameters

  • UPLO β€” CHARACTER*1

on entry, UPLO says whether the matrix is upper or lower triangular, as follows:

  • UPLO = 'U' or 'u' β€” A is an upper triangular matrix.
  • UPLO = 'L' or 'l' β€” A is a lower triangular matrix.
  • TRANS β€” CHARACTER*1

on entry, TRANS says which operation we're performing:

  • TRANS = 'N' or 'n' β€” x := A*x.
  • TRANS = 'T' or 't' β€” x := A**T*x.
  • TRANS = 'C' or 'c' β€” x := A**T*x.
  • DIAG β€” CHARACTER*1

on entry, DIAG says whether or not A is unit triangular:

  • DIAG = 'U' or 'u' β€” A is assumed to be unit triangular.
  • DIAG = 'N' or 'n' β€” A is not assumed to be unit triangular.
  • N β€” INTEGER

on entry, N is the order of the matrix A. N must be at least zero.

  • AP β€” REAL array, dimension at least ( ( n*( n + 1 ) )/2 )

before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. 🧚

before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. 🧚

note that when DIAG = 'U' or 'u', the diagonal elements of A are not referenced, but are assumed to be unity. they're giving ghost πŸ‘»
  • X β€” REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) )

before entry, the incremented array X must contain the n element vector x. on exit, X is overwritten with the transformed vector x. main character transformation arc πŸ’…

  • INCX β€” INTEGER

on entry, INCX is the increment for the elements of X. INCX must not be zero. fr fr.

Author πŸ‘‘

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Further Details:

Level 2 Blas routine.

The vector and matrix arguments are not referenced when N = 0, or M = 0 πŸ«₯

-- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.


subroutine stpsv (character UPLO, character TRANS, character DIAG, integer N, real, dimension(*) AP, real, dimension(*) X, integer INCX) 🌸

STPSV

Purpose:

STPSV solves one of the systems of equations

A*x = b,   or   A**T*x = 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. bestie, she will not warn you. check it yourself before you call her. that's not a vibe check she performs 😭

Parameters

  • UPLO β€” CHARACTER*1

on entry, UPLO says whether the matrix is upper or lower triangular, as follows:

  • UPLO = 'U' or 'u' β€” A is an upper triangular matrix.
  • UPLO = 'L' or 'l' β€” A is a lower triangular matrix.
  • TRANS β€” CHARACTER*1

on entry, TRANS says which equations we're solving:

  • TRANS = 'N' or 'n' β€” A*x = b.
  • TRANS = 'T' or 't' β€” A**T*x = b.
  • TRANS = 'C' or 'c' β€” A**T*x = b.
  • DIAG β€” CHARACTER*1

on entry, DIAG says whether or not A is unit triangular:

  • DIAG = 'U' or 'u' β€” A is assumed to be unit triangular.
  • DIAG = 'N' or 'n' β€” A is not assumed to be unit triangular.
  • N β€” INTEGER

on entry, N is the order of the matrix A. N must be at least zero.

  • AP β€” REAL array, dimension at least ( ( n*( n + 1 ) )/2 )

before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. πŸŽ€

before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. πŸŽ€

note that when DIAG = 'U' or 'u', the diagonal elements of A are not referenced, but are assumed to be unity. lowkey they're just there for decoration πŸ’€
  • X
  • X β€” okay so X is a REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X has to contain the n element right-hand side vector b. And on exit? X gets overwritten with the solution vector x. she served, she left πŸ’…
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. And INCX must not be zero. like bestie zero is NOT the vibe, do not do it 🚫

Author 🫢

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details: πŸŽ€

Level 2 Blas routine.

  -- Written on 22-October-1986.
     Jack Dongarra, Argonne National Lab.
     Jeremy Du Croz, Nag Central Office.
     Sven Hammarling, Nag Central Office.
     Richard Hanson, Sandia National Labs.

🌈 subroutine strmv 🌈

subroutine strmv (character UPLO, character TRANS, character DIAG, integer
    N, real, dimension(lda,*) A, integer LDA, real, dimension(*) X, integer
    INCX)

STRMV ✨

Purpose: 🎯

STRMV performs one of the matrix-vector operations

   x := A*x,   or   x := A**T*x,

where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular matrix. triangular matrix era, honestly iconic πŸ”Ί

Parameters πŸ’…

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the matrix is an upper or lower triangular matrix as follows:
    • UPLO = 'U' or 'u' β†’ A is an upper triangular matrix.
    • UPLO = 'L' or 'l' β†’ A is a lower triangular matrix.
  • TRANS β€” TRANS is CHARACTER*1. On entry, TRANS specifies the operation to be performed as follows:
    • TRANS = 'N' or 'n' β†’ x := A*x.
    • TRANS = 'T' or 't' β†’ x := A**T*x.
    • TRANS = 'C' or 'c' β†’ x := A**T*x.
  • DIAG β€” DIAG is CHARACTER*1. On entry, DIAG specifies whether or not A is unit triangular as follows:
    • DIAG = 'U' or 'u' β†’ A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' β†’ A is not assumed to be unit triangular.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. And N must be at least zero. no negative nonsense, we don't know her πŸ™…β€β™€οΈ
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry with UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular matrix, and the strictly lower triangular part of A is not referenced. Before entry with UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular matrix, and the strictly upper triangular part of A is not referenced either. Also note: when DIAG = 'U' or 'u', the diagonal elements of A are not referenced either, but are assumed to be unity. cute of them honestly ✨
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. And LDA must be at least max( 1, n ). periodt πŸ“
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. On exit, X is overwritten with the transformed vector x. glow up 🌟
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. same rule as always bestie πŸ’€

Author 🫢

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details: πŸŽ€

Level 2 Blas routine.

The vector and matrix arguments are not referenced when N = 0, or M = 0.

  -- Written on 22-October-1986.
     Jack Dongarra, Argonne National Lab.
     Jeremy Du Croz, Nag Central Office.
     Sven Hammarling, Nag Central Office.
     Richard Hanson, Sandia National Labs.

πŸ¦‹ subroutine strsv πŸ¦‹

subroutine strsv (character UPLO, character TRANS, character DIAG, integer
    N, real, dimension(lda,*) A, integer LDA, real, dimension(*) X, integer
    INCX)

STRSV ⭐

Purpose: 🎯

STRSV solves one of the systems of equations

   A*x = b,   or   A**T*x = 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. bestie this routine does NOT check if your matrix is a disaster, that's a you problem 😭

Parameters πŸ’…

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the matrix is an upper or lower triangular matrix as follows:
    • UPLO = 'U' or 'u' β†’ A is an upper triangular matrix.
    • UPLO = 'L' or 'l' β†’ A is a lower triangular matrix.
  • TRANS β€” TRANS is CHARACTER*1. On entry, TRANS specifies the equations to be solved as follows:
    • TRANS = 'N' or 'n' β†’ A*x = b.
    • TRANS = 'T' or 't' β†’ A**T*x = b.
    • TRANS = 'C' or 'c' β†’ A**T*x = b.
  • DIAG β€” DIAG is CHARACTER*1. On entry, DIAG specifies whether or not A is unit triangular as follows:
    • DIAG = 'U' or 'u' β†’ A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' β†’ A is not assumed to be unit triangular.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. again. at least zero. always. πŸ’―
  • A β€” A is REAL array, dimension ( LDA, N ). Before entry with UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular matrix, and the strictly lower triangular part of A is not referenced. Before entry with UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular matrix, and the strictly upper triangular part of A is not referenced either. Also note: when DIAG = 'U' or 'u', the diagonal elements of A are not referenced either, but are assumed to be unity. yes queen, ones on the diagonal by default πŸ‘‘
  • LDA β€” LDA is INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. And LDA must be at least max( 1, n ). πŸ“
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element right-hand side vector b. On exit, X is overwritten with the solution vector x. she came in as b and left as x, that's character development 🫢
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. ok last time I'm saying it: NOT. ZERO. πŸ’€

Author 🫢

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details: πŸŽ€

Level 2 Blas routine.

  -- Written on 22-October-1986.
     Jack Dongarra, Argonne National Lab.
     Jeremy Du Croz, Nag Central Office.
     Sven Hammarling, Nag Central Office.
     Richard Hanson, Sandia National Labs.

Author πŸ’–

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page bestie!! πŸŽ€βœ¨ this one is Version 3.11.0, dated Sun Nov 27 2022, and it lives at single_blas_level2(3) β€” go forth and triangular-matrix your way through the day, i'm obsessed with you πŸ’œπŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from