/home/abui...RC/zgtsv.f(3)

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

πŸ¦‹ /home/abui...RC/zgtsv.f(3) β€” the ZGTSV glow-up ✨

okay so bestie, welcome to the manual page for /home/abui...RC/zgtsv.f(3) from the Library Functions Manual. buckle up, we're solving tridiagonal systems and we're gonna look cute doing it πŸ’…


🌸 NAME 🌸

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

like yes, that's the whole name, it's giving "my parents named me after the filing cabinet" but honestly? iconic. that's the source file, that's where the magic lives 🫢


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine ZGTSV (n, nrhs, dl, d, du, b, ldb, info) β€” ZGTSV computes the solution to system of linear equations A * X = B for GT matrices

πŸ’– Function/Subroutine Documentation πŸ’–

subroutine ZGTSV (integer n, integer nrhs, complex*16, dimension( * ) dl,
    complex*16, dimension( * ) d, complex*16, dimension( * ) du, complex*16,
    dimension( ldb, * ) b, integer ldb, integer info)

ZGTSV computes the solution to system of linear equations A * X = B for GT matrices. that's the whole vibe, no cap πŸ”₯

πŸŽ€ Purpose πŸŽ€

!>
!> ZGTSV  solves the equation
!>
!>    A*X = B,
!>
!> where A is an N-by-N tridiagonal matrix, by Gaussian elimination with
!> partial pivoting.
!>
!> Note that the equation  A**T *X = B  may be solved by interchanging the
!> order of the arguments DU and DL.
!>

so like, A is an N-by-N tridiagonal matrix and we're solving it with Gaussian elimination with partial pivoting. main character algorithm behavior honestly πŸ‘‘

and the little note that lives rent free in my head: you can solve A**T *X = B by just swapping the order of the arguments DU and DL. literally just vibes and a swap. iykyk πŸ’«


🧚 Parameters 🧚

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

the order of the matrix A. N >= 0, periodt.

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

the number of right hand sides, aka the number of columns of the matrix B. NRHS >= 0, slay.

  • DL
!>          DL is COMPLEX*16 array, dimension (N-1)
!>          On entry, DL must contain the (n-1) subdiagonal elements of
!>          A.
!>          On exit, DL is overwritten by the (n-2) elements of the
!>          second superdiagonal of the upper triangular matrix U from
!>          the LU factorization of A, in DL(1), ..., DL(n-2).

COMPLEX*16 array, dimension (N-1). on entry it HAS to have the (n-1) subdiagonal elements of A. on exit it gets overwritten (glow-down, not glow-up 😭) by the (n-2) elements of the second superdiagonal of the upper triangular matrix U from the LU factorization of A, sitting pretty in DL(1), ..., DL(n-2).

  • D
!>          D is COMPLEX*16 array, dimension (N)
!>          On entry, D must contain the diagonal elements of A.
!>          On exit, D is overwritten by the n diagonal elements of U.

COMPLEX*16 array, dimension (N). on entry, the diagonal elements of A. on exit, overwritten by the n diagonal elements of U. she got a whole new identity, honestly relatable πŸ’€

  • DU
!>          DU is COMPLEX*16 array, dimension (N-1)
!>          On entry, DU must contain the (n-1) superdiagonal elements
!>          of A.
!>          On exit, DU is overwritten by the (n-1) elements of the first
!>          superdiagonal of U.

COMPLEX*16 array, dimension (N-1). on entry, the (n-1) superdiagonal elements of A. on exit, overwritten by the (n-1) elements of the first superdiagonal of U.

  • B
!>          B is COMPLEX*16 array, dimension (LDB,NRHS)
!>          On entry, the N-by-NRHS right hand side matrix B.
!>          On exit, if INFO = 0, the N-by-NRHS solution matrix X.

COMPLEX*16 array, dimension (LDB,NRHS). on entry, the N-by-NRHS right hand side matrix B. on exit, if INFO = 0, it's the N-by-NRHS solution matrix X. she graduated from right-hand-side to solution, we love a transformation arc 🌈

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

INTEGER. the leading dimension of the array B, and it better be LDB >= max(1,N). respect the constraint or don't come to the function πŸ’…

  • INFO
!>          INFO is INTEGER
!>          = 0:  successful exit
!>          < 0:  if INFO = -i, the i-th argument had an illegal value
!>          > 0:  if INFO = i, U(i,i) is exactly zero, and the solution
!>                has not been computed.  The factorization has not been
!>                completed unless i = N.

INTEGER, our little status reporter:

  • = 0: successful exit πŸŽ‰
  • < 0: if INFO = -i, the i-th argument had an illegal value πŸ™ˆ
  • > 0: if INFO = i, U(i,i) is exactly zero and the solution has not been computed. the factorization has not been completed unless i = N 😭
⚠️ real talk bestie: a zero on the diagonal is a whole situation, the solution does NOT exist in that case, don't come for me, come for U(i,i).

πŸ‘‘ Author πŸ‘‘

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

the whole squad, the founding mothers and fathers of this routine 🫢

πŸ“ Definition at line 123 of file zgtsv.f.

like, line one-two-three, that's where she lives ✨


πŸ’œ Author πŸ’œ

Generated automatically by Doxygen for LAPACK from the source code.

(so nobody hand-wrote this, the robot did it, and honestly? the robot ate πŸ€–πŸ’…)


🌟 the cute sign-off 🌟

this page came to you courtesy of LAPACK, Version 3.12.0, and it's filed under /home/abui...RC/zgtsv.f(3) β€” that's the date and the source, bestie, all wrapped up with a bow πŸŽ€

now go solve that tridiagonal system. A*X = B era. you got this πŸ’–πŸ¦‹βœ¨

πŸ“¦ where this page comes from