SRC/strtri.f(3)

πŸ’… SRC/strtri.f β€” like, the actual manual page, bestie

okay so this is a page from the LAPACK library manual (that's the big serious linear-algebra one, yes she's iconic) and today's main character is strtri. buckle up πŸŽ€


✨ NAME ✨

SRC/strtri.f β€” no cap, that's literally it, that's the name πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine strtri (uplo, diag, n, a, lda, info) β€” the one and only STRTRI πŸ‘‘

🌸 Function/Subroutine Documentation 🌸

subroutine strtri (character uplo, character diag, integer n, real,
     dimension( lda, * ) a, integer lda, integer info)

STRTRI β€” say her name, say it loud πŸ“£

πŸ’œ Purpose

ok so here's the tea, straight from the source:

!>
!> STRTRI computes the inverse of a real upper or lower triangular
!> matrix A.
!>
!> This is the Level 3 BLAS version of the algorithm.
!>

so yeah β€” she inverts a real triangular matrix for you, upper or lower, your call. and she's the Level 3 BLAS version of the algorithm, which is lowkey a flex. slay ✨

πŸ“ Parameters

UPLO

!>          UPLO is CHARACTER*1
!>          = 'U':  A is upper triangular;
!>          = 'L':  A is lower triangular.
!>

the vibe check for which triangle we're doing πŸ”Ό

  • 'U' β†’ A is upper triangular ⬆️
  • 'L' β†’ A is lower triangular ⬇️

DIAG

!>          DIAG is CHARACTER*1
!>          = 'N':  A is non-unit triangular;
!>          = 'U':  A is unit triangular.
!>

this one decides whether the diagonal is doing its own thing or just being a bunch of ones 🫢

  • 'N' β†’ A is non-unit triangular (diagonal is real, she's got range)
  • 'U' β†’ A is unit triangular (diagonal is all 1s, no thoughts head empty)

N

!>          N is INTEGER
!>          The order of the matrix A.  N >= 0.
!>

the order of the matrix A, bestie. and reminder: N >= 0 β€” negative N is not the move, don't even try it πŸ’€

A

!>          A is REAL array, dimension (LDA,N)
!>          On entry, the triangular matrix A.  If UPLO = 'U', the
!>          leading N-by-N upper triangular part of the array A contains
!>          the upper triangular matrix, and the strictly lower
!>          triangular part of A is not referenced.  If UPLO = 'L', the
!>          leading N-by-N lower triangular part of the array A contains
!>          the lower triangular matrix, and the strictly upper
!>          triangular part of A is not referenced.  If DIAG = 'U', the
!>          diagonal elements of A are also not referenced and are
!>          assumed to be 1.
!>          On exit, the (triangular) inverse of the original matrix, in
!>          the same storage format.
!>

ok this is the big one, the main character herself πŸ’… A is a REAL array, dimension (LDA,N).

  • on entry: it's your triangular matrix A.
    • if UPLO = 'U' β†’ the leading N-by-N upper triangular part of the array holds the upper triangular matrix, and the strictly lower triangular part of A is not referenced (she's not looking at it, she's not thinking about it πŸ™ˆ).
    • if UPLO = 'L' β†’ the leading N-by-N lower triangular part holds the lower triangular matrix, and the strictly upper triangular part of A is not referenced.
    • if DIAG = 'U' β†’ the diagonal elements of A are also not referenced and are assumed to be 1.
  • on exit: the (triangular) inverse of the original matrix, in the same storage format. she did the glow-up in place, obsessed 😭✨

LDA

!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,N).
!>

the leading dimension of the array A. rule of the house: LDA >= max(1,N) πŸ“

INFO

!>          INFO is INTEGER
!>          = 0: successful exit
!>          < 0: if INFO = -i, the i-th argument had an illegal value
!>          > 0: if INFO = i, A(i,i) is exactly zero.  The triangular
!>               matrix is singular and its inverse can not be computed.
!>

the little status report at the end 🫑

  • = 0 β†’ successful exit, we ate πŸŽ‰
  • < 0 β†’ if INFO = -i, the i-th argument had an illegal value (somebody typed something goofy 😬)
  • > 0 β†’ if INFO = i, A(i,i) is exactly zero. the triangular matrix is singular and its inverse can not be computed. periodt, there's no coming back from that πŸ’€
ngl the INFO > 0 case is the dramatic one β€” singular matrix means no inverse exists, so don't go acting surprised when it bails on you.

πŸ‘‘ Author

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

the whole collective behind the icon, fr fr 🫢

Definition at line 108 of file strtri.f. β€” for the girlies who need receipts πŸ”


🌈 Author (the meta one)

Generated automatically by Doxygen for LAPACK from the source code. (yes, the docs have docs, it's giving main character energy all the way down 🧚)


and that's the whole page, bestie β€” every flag, every parameter, every exit code, nothing skipped πŸ’–

catch you in the next manpage β€” this one's from LAPACK, Version 3.12.0, page SRC/strtri.f(3). mwah πŸ’‹βœ¨πŸŒΈ

πŸ“¦ where this page comes from