BLAS/SRC/strsv.f(3)

πŸ’… BLAS/SRC/strsv.f(3) β€” Library Functions Manual ✨

okay bestie, settle in, because this is the BLAS/SRC/strsv.f page from the Library Functions Manual and it's literally the definition of "small but mighty" 🫢


🌸 NAME 🌸

BLAS/SRC/strsv.f β€” no cap, that's the whole name, that's the whole vibe πŸ’–


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine strsv (uplo, trans, diag, n, a, lda, x, incx) β€” STRSV πŸ‘‘

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

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.
!>

so basically: give it a triangular matrix A and a right-hand side vector b, and it hands you back x. iconic behaviour, honestly πŸ’…

⚠️ big heads-up bestie: this routine does not check whether your matrix is singular or near-singular. zero vibe checks included. you gotta do those tests yourself before you call it, fr fr 😭

πŸ’œ Parameters πŸ’œ

  • UPLO β€” UPLO is CHARACTER*1. on entry, UPLO tells us whether the matrix is an upper or lower triangular matrix, like:
!>              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 says which equations we're solving, and it's giving options:
!>              TRANS = 'N' or 'n'   A*x = b.
!>
!>              TRANS = 'T' or 't'   A**T*x = b.
!>
!>              TRANS = 'C' or 'c'   A**T*x = b.

(yes, 'T' and 'C' do the exact same thing here β€” they're twins, not that deep πŸ’€)

  • DIAG β€” DIAG is CHARACTER*1. on entry, DIAG specifies 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 β€” N is INTEGER. on entry, N specifies the order of the matrix A. N must be at least zero. (zero is allowed, we love an inclusive queen 🌈)
  • A β€” A is REAL array, dimension ( LDA, N ). okay so listen:
!>           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.
!>           Note that when  DIAG = 'U' or 'u', the diagonal elements of
!>           A are not referenced either, but are assumed to be unity.

so half of your array is main character and the other half is literally not even invited to the party πŸ™ˆ and if DIAG = 'U'/'u', the diagonal also gets ghosted β€” it's 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 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. πŸŽ€ so yeah, it's an in-place glow-up: b goes in, x comes out, the original b is gone, don't come for me 😭
  • INCX β€” INCX is INTEGER. on entry, INCX specifies the increment for the elements of X. INCX must not be zero. periodt, zero is not allowed 🚫

πŸ‘‘ Author πŸ‘‘

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

the whole squad showed up for this one 🫢


⭐ 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.
!>

Level 2 BLAS routine, written on 22-October-1986 and still serving looks πŸ”₯ the way this routine has been iconic since before most of us were born is genuinely unreal.


πŸ“ Definition πŸ“

Definition at line 148 of file strsv.f. πŸ“


🌟 Author 🌟

Generated automatically by Doxygen for LAPACK from the source code. (not a human, just a very efficient little robot πŸ€–βœ¨)


and that's the whole page bestie!! πŸ’– this came straight from LAPACK, Version 3.12.0, on BLAS/SRC/strsv.f(3) β€” go forth and solve those triangular systems, you absolute icon πŸ’…πŸ‘‘πŸŒˆ

πŸ“¦ where this page comes from