ZGTTS2(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

🌸 NAME

okay so bestie, this page is literally all about zgtts2.f β€” like, the actual file lives at:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zgtts2.f

yes that's a whole path, no I'm not gonna shorten it, it's giving absolute energy πŸ’…


✨ SYNOPSIS ✨

🫢 Functions/Subroutines

so here's the subroutine, look at her:

subroutine ZGTTS2 (itrans, n, nrhs, dl, d, du, du2, ipiv, b, ldb)

and what she does?? ZGTTS2 solves a system of linear equations with a tridiagonal matrix using the LU factorization computed by sgttrf. like, that's her whole job and she ate πŸ’–


πŸ”₯ Function/Subroutine Documentation πŸ”₯

πŸŽ€ subroutine ZGTTS2

okay here's the full signature with all the types spelled out, character for character, because we do NOT mess with types in this house:

subroutine ZGTTS2 (integer itrans, integer n, integer nrhs, complex*16,
    dimension( * ) dl, complex*16, dimension( * ) d, complex*16, dimension(
    * ) du, complex*16, dimension( * ) du2, integer, dimension( * ) ipiv,
    complex*16, dimension( ldb, * ) b, integer ldb)

and again, just so we're clear: ZGTTS2 solves a system of linear equations with a tridiagonal matrix using the LU factorization computed by sgttrf. ✨


πŸ’œ Purpose

okay so the actual mission statement, direct from the source vibes:

!>
!> ZGTTS2 solves one of the systems of equations
!>    A * X = B,  A**T * X = B,  or  A**H * X = B,
!> with a tridiagonal matrix A using the LU factorization computed
!> by ZGTTRF.
!>

three systems, three moods, one tridiagonal queen πŸ‘‘ (and yes, note that she's working off the LU factorization computed by ZGTTRF β€” that's the capitalization in the Purpose block, and we respect it 🫢)


🌈 Parameters

⭐ ITRANS

!>          ITRANS is INTEGER
!>          Specifies the form of the system of equations.
!>          = 0:  A * X = B     (No transpose)
!>          = 1:  A**T * X = B  (Transpose)
!>          = 2:  A**H * X = B  (Conjugate transpose)
!>

ITRANS is an INTEGER and it picks which form of the system you want:

  • = 0: A * X = B β€” no transpose, the chill option 😌
  • = 1: A**T * X = B β€” transpose πŸ’«
  • = 2: A**H * X = B β€” conjugate transpose, the main character option πŸ”₯

⭐ N

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

N is an INTEGER β€” the order of the matrix A. that's it, that's the whole vibe.

⭐ NRHS

!>          NRHS is INTEGER
!>          The number of right hand sides, i.e., the number of columns
!>          of the matrix B.  NRHS >= 0.
!>

NRHS is an INTEGER β€” how many right hand sides, AKA how many columns the matrix B has. and listen: NRHS >= 0. zero is allowed, negative is NOT the move πŸ™ˆ

⭐ DL

!>          DL is COMPLEX*16 array, dimension (N-1)
!>          The (n-1) multipliers that define the matrix L from the
!>          LU factorization of A.
!>

DL is a COMPLEX*16 array, dimension (N-1) β€” the (n-1) multipliers that build the matrix L from the LU factorization of A. lowkey iconic πŸ¦‹

⭐ D

!>          D is COMPLEX*16 array, dimension (N)
!>          The n diagonal elements of the upper triangular matrix U from
!>          the LU factorization of A.
!>

D is a COMPLEX*16 array, dimension (N) β€” the n diagonal elements of that upper triangular matrix U, straight from the LU factorization of A. periodt πŸ’…

⭐ DU

!>          DU is COMPLEX*16 array, dimension (N-1)
!>          The (n-1) elements of the first super-diagonal of U.
!>

DU is a COMPLEX*16 array, dimension (N-1) β€” the (n-1) elements of the first super-diagonal of U. first one, don't get it twisted 🌸

⭐ DU2

!>          DU2 is COMPLEX*16 array, dimension (N-2)
!>          The (n-2) elements of the second super-diagonal of U.
!>

DU2 is a COMPLEX*16 array, dimension (N-2) β€” the (n-2) elements of the second super-diagonal of U. yes it's N-2 not N-1, she's built different πŸ’€

⭐ IPIV

!>          IPIV is INTEGER array, dimension (N)
!>          The pivot indices; for 1 <= i <= n, row i of the matrix was
!>          interchanged with row IPIV(i).  IPIV(i) will always be either
!>          i or i+1; IPIV(i) = i indicates a row interchange was not
!>          required.
!>

IPIV is an INTEGER array, dimension (N) β€” the pivot indices, bestie. for 1 <= i <= n, row i of the matrix was interchanged with row IPIV(i). and here's the tea: IPIV(i) will always be either i or i+1. if IPIV(i) = i, that means no row interchange was needed at all 🫢

⭐ B

!>          B is COMPLEX*16 array, dimension (LDB,NRHS)
!>          On entry, the matrix of right hand side vectors B.
!>          On exit, B is overwritten by the solution vectors X.
!>

B is a COMPLEX*16 array, dimension (LDB,NRHS) β€” on entry, it's the matrix of right hand side vectors B. on exit?? ⚠️ B is overwritten by the solution vectors X ⚠️ so don't come crying if your original B is gone, that's literally the deal 😭

⭐ LDB

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

LDB is an INTEGER β€” the leading dimension of the array B. and the rule is LDB >= max(1,N). respect the constraint or the vibes will be off πŸ’€


🧚 Author

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

and she's defined at line 127 of file zgtts2.f. πŸ“


🌟 Author

this whole page was generated automatically by Doxygen for LAPACK from the source code. like, a robot wrote it and honestly? she understood the assignment ✨


πŸ’– that's the whole page bestie! go forth, pass the right ITRANS, keep LDB >= max(1,N), and remember your B gets clapped by the solution on exit. no cap. πŸŽ€

LAPACK β€” Version 3.12.0 🌈 and the file is /home/abui...RC/zgtts2.f(3), mwah, bye! πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from