BLAS/SRC/ctbsv.f(3)

πŸ’– BLAS/SRC/ctbsv.f πŸ’–

okay bestie, this is the ctbsv page from the LAPACK manual (that's the manual name, love that for us) β€” it lives at BLAS/SRC/ctbsv.f. it's a Level 2 BLAS routine and it's honestly so real for what it does. let's get into it 🫢


✨ NAME ✨

BLAS/SRC/ctbsv.f β€” no cap, that's literally the name, the file is the name, we love a minimalist icon πŸ’…


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine ctbsv (uplo, trans, diag, n, k, a, lda, x, incx) β€” this is CTBSV, the moment, the legend πŸ‘‘

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

subroutine ctbsv (character uplo, character trans, character diag, integer
    n, integer k, complex, dimension(lda,*) a, integer lda, complex,
    dimension(*) x, integer incx)

CTBSV β€” say it with me. iconic.

πŸŽ€ Purpose πŸŽ€

so CTBSV solves one of these systems of equations, pick your fighter:

A*x = b,   or   A**T*x = b,   or   A**H*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. she's a band matrix, she's triangular, she's booked and busy πŸ’–

⚠️ real talk bestie, this part is important: there is NO test for singularity or near-singularity included in this routine. none. zero. not a vibe check to be found. such tests must be performed before calling this routine. so do your homework first, okay? πŸ™ˆ

🧚 Parameters 🧚

  • UPLO β€” UPLO is CHARACTER*1. on entry, UPLO specifies whether the matrix is an upper or lower triangular matrix, like this:
    • 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 which equations we're solving, as follows:
    • TRANS = 'N' or 'n' β€” A*x = b.
    • TRANS = 'T' or 't' β€” A**T*x = b.
    • TRANS = 'C' or 'c' β€” A**H*x = b.
  • DIAG β€” DIAG is CHARACTER*1. on entry, DIAG specifies whether or not A is unit triangular, like this:
    • 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. (yes bestie, zero is allowed, we respect the boundary 🫢)
  • 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 COMPLEX 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. so like, they're there but we're not looking at them, minding our business πŸ’…
  • 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 COMPLEX 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 gets a glow-up mid-call, obsessed ✨
  • INCX β€” INCX is INTEGER. on entry, INCX specifies the increment for the elements of X. INCX must not be zero. seriously. not zero. 🚫

πŸ‘‘ Author πŸ‘‘

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

the whole squad showed up, periodt πŸ’œ

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

1986?? they were doing this before most of us were even a thought and it still slaps. main character energy fr fr πŸ”₯

πŸ“ Definition πŸ“

Definition at line 188 of file ctbsv.f.


πŸ’« Author πŸ’«

Generated automatically by Doxygen for LAPACK from the source code. (not me writing this by hand, the machine did it, but I gave it the sparkle ✨)


and that's the whole page bestie, you ate it up πŸ“

cute lil sign-off: this was Version 3.12.0, dated Tue Nov 28 2023 12:08:41, from BLAS/SRC/ctbsv.f(3). love you, bye πŸ’–πŸŽ€πŸ¦‹