complex16GTsolve(3)

πŸ“¦
version 3.11.0 Β· 2 versions
, in debian bookworm

πŸ’– complex16GTsolve β€” the NAME section, bestie πŸ’–

okay so this page is complex16GTsolve, and it's giving complex16 energy, fr fr. It's a LAPACK situation and it's lowkey iconic. Buckle up, we're doing linear algebra together and it's gonna slay. ✨


✨ SYNOPSIS ✨

πŸŽ€ Functions πŸŽ€

  • 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 πŸ’…
  • subroutine zgtsvx (FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO) β€” ZGTSVX computes the solution to system of linear equations A * X = B for GT matrices 🌸

πŸ¦‹ Detailed Description πŸ¦‹

This is the whole lil friend group of complex16 solve driver functions for GT matrices. That's the vibe. 🫢


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’… subroutine zgtsv

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 ✨

🌟 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.
not me casually dropping Gaussian elimination with partial pivoting like it's nothing 😭 she's a main character for real.

πŸ’– Parameters πŸ’–

  • N β€” N is INTEGER. It's the order of the matrix A, bestie. N >= 0. πŸŽ€
  • NRHS β€” NRHS is INTEGER. The number of right hand sides, aka the number of columns of the matrix B. NRHS >= 0. πŸ’…
  • 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). 🌸
  • 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. ✨
  • 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. πŸ¦‹
  • 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. πŸ‘‘
  • LDB β€” LDB is INTEGER. The leading dimension of the array B. LDB >= 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, U(i,i) is exactly zero, and the solution has not been computed. The factorization has not been completed unless i = N. πŸ’€
okay so that > 0 case? that's the "we didn't finish, girl" scenario. Pay attention to it, fr fr.

🌈 Author 🌈

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

🧚 subroutine zgtsvx

subroutine zgtsvx (character FACT, character TRANS, integer N, integer NRHS,
    complex*16, dimension( * ) DL, complex*16, dimension( * ) D, complex*16,
    dimension( * ) DU, complex*16, dimension( * ) DLF, complex*16,
    dimension( * ) DF, complex*16, dimension( * ) DUF, complex*16,
    dimension( * ) DU2, integer, dimension( * ) IPIV, complex*16, dimension(
    ldb, * ) B, integer LDB, complex*16, dimension( ldx, * ) X, integer LDX,
    double precision RCOND, double precision, dimension( * ) FERR, double
    precision, dimension( * ) BERR, complex*16, dimension( * ) WORK, double
    precision, dimension( * ) RWORK, integer INFO)

ZGTSVX computes the solution to system of linear equations A * X = B for GT matrices ✨

🌟 Purpose:

ZGTSVX uses the LU factorization to compute the solution to a complex
system of linear equations A * X = B, A**T * X = B, or A**H * X = B,
where A is a tridiagonal matrix of order N and X and B are N-by-NRHS
matrices.

Error bounds on the solution and a condition estimate are also
provided.

πŸŽ€ Description: πŸŽ€

Here's the lil step-by-step, and yes she eats every time:

  1. If FACT = 'N', the LU decomposition is used to factor the matrix A as A = L * U, where L is a product of permutation and unit lower bidiagonal matrices and U is upper triangular with nonzeros in only the main diagonal and first two superdiagonals.
  2. If some U(i,i)=0, so that U is exactly singular, then the routine returns with INFO = i. Otherwise, the factored form of A is used to estimate the condition number of the matrix A. If the reciprocal of the condition number is less than machine precision, INFO = N+1 is returned as a warning, but the routine still goes on to solve for X and compute error bounds as described below.
  3. The system of equations is solved for X using the factored form of A.
  4. Iterative refinement is applied to improve the computed solution matrix and calculate error bounds and backward error estimates for it.
warning bestie: INFO = N+1 means "it's giving singular-ish, be careful" β€” but she still finishes the job and hands you X with error bounds. She's not a quitter. πŸ’…

πŸ’– Parameters πŸ’–

  • FACT β€” FACT is CHARACTER*1. Specifies whether or not the factored form of A has been supplied on entry.
    • = 'F': DLF, DF, DUF, DU2, and IPIV contain the factored form of A; DL, D, DU, DLF, DF, DUF, DU2 and IPIV will not be modified. 🧊
    • = 'N': The matrix will be copied to DLF, DF, and DUF and factored. ✨
  • TRANS β€” TRANS is CHARACTER*1. Specifies the form of the system of equations:
    • = 'N': A * X = B (No transpose) πŸ’…
    • = 'T': A**T * X = B (Transpose) πŸ”₯
    • = 'C': A**H * X = B (Conjugate transpose) 🌈
  • N β€” N is INTEGER. The order of the matrix A. N >= 0. πŸŽ€
  • NRHS β€” NRHS is INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0. πŸ’œ
  • DL β€” DL is COMPLEX*16 array, dimension (N-1). The (n-1) subdiagonal elements of A. 🌸
  • D β€” D is COMPLEX*16 array, dimension (N). The n diagonal elements of A. ✨
  • DU β€” DU is COMPLEX*16 array, dimension (N-1). The (n-1) superdiagonal elements of A. πŸ¦‹
  • DLF β€” DLF is COMPLEX*16 array, dimension (N-1).
    • If FACT = 'F', then DLF is an input argument and on entry contains the (n-1) multipliers that define the matrix L from the LU factorization of A as computed by ZGTTRF.
    • If FACT = 'N', then DLF is an output argument and on exit contains the (n-1) multipliers that define the matrix L from the LU factorization of A.
  • DF β€” DF is COMPLEX*16 array, dimension (N).
    • If FACT = 'F', then DF is an input argument and on entry contains the n diagonal elements of the upper triangular matrix U from the LU factorization of A.
    • If FACT = 'N', then DF is an output argument and on exit contains the n diagonal elements of the upper triangular matrix U from the LU factorization of A.
  • DUF β€” DUF is COMPLEX*16 array, dimension (N-1).
    • If FACT = 'F', then DUF is an input argument and on entry contains the (n-1) elements of the first superdiagonal of U.
    • If FACT = 'N', then DUF is an output argument and on exit contains the (n-1) elements of the first superdiagonal of U.
  • DU2 β€” DU2 is COMPLEX*16 array, dimension (N-2).
    • If FACT = 'F', then DU2 is an input argument and on entry contains the (n-2) elements of the second superdiagonal of U.
    • If FACT = 'N', then DU2 is an output argument and on exit contains the (n-2) elements of the second superdiagonal of U.
  • IPIV β€” IPIV is INTEGER array, dimension (N).
    • If FACT = 'F', then IPIV is an input argument and on entry contains the pivot indices from the LU factorization of A as computed by ZGTTRF.
    • If FACT = 'N', then IPIV is an output argument and on exit contains the pivot indices from the LU factorization of A; 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. πŸ‘€
  • B β€” B is COMPLEX*16 array, dimension (LDB,NRHS). The N-by-NRHS right hand side matrix B. πŸ’–
  • LDB β€” LDB is INTEGER. The leading dimension of the array B. LDB >= max(1,N). πŸŽ€
  • X β€” X is COMPLEX*16 array, dimension (LDX,NRHS). If INFO = 0 or INFO = N+1, the N-by-NRHS solution matrix X. πŸ‘‘
  • LDX β€” LDX is INTEGER. The leading dimension of the array X. LDX >= max(1,N). πŸ’…
  • RCOND β€” RCOND is DOUBLE PRECISION. The estimate of the reciprocal condition number of the matrix A. If RCOND is less than the machine precision (in particular, if RCOND = 0), the matrix is singular to working precision. This condition is indicated by a return code of INFO > 0. 😬
  • FERR β€” FERR is DOUBLE PRECISION array, dimension (NRHS). The estimated forward error bound for each solution vector X(j) (the j-th column of the solution matrix X). If XTRUE is the true solution corresponding to X(j), FERR(j) is an estimated upper bound for the magnitude of the largest element in (X(j) - XTRUE) divided by the magnitude of the largest element in X(j). The estimate is as reliable as the estimate for RCOND, and is almost always a slight overestimate of the true error. 🫢
  • BERR β€” BERR is DOUBLE PRECISION array, dimension (NRHS). The componentwise relative backward error of each solution vector X(j) (i.e., the smallest relative change in any element of A or B that makes X(j) an exact solution). 🌟
  • WORK β€” WORK is COMPLEX*16 array, dimension (2*N). 🧚
  • RWORK β€” RWORK is DOUBLE PRECISION array, dimension (N). 🌸
  • INFO β€” (bestie hold on, the INFO deets are literally in the next part, don't go anywhere πŸ’–)

and finally, the parameter that's basically the group chat read receipt:

  • INFO is INTEGER β€” this is the tea β˜• it tells you if everything popped off or if it flopped.
    • = 0: successful exit β€” slay, we love a clean run ✨
    • < 0: if INFO = -i, then the i-th argument had an illegal value β€” not iconic, someone passed something cursed πŸ™ˆ
    • > 0: if INFO = i, and i is:
      • <= N: U(i,i) is exactly zero. The factorization has not been completed unless i = N, but the factor U is exactly singular, so the solution and error bounds could not be computed. RCOND = 0 is returned. πŸ’€ full-on singular behavior, no cap.
      • = N+1: U is nonsingular, but RCOND is less than machine precision, meaning that the matrix is singular to working precision. Nevertheless, the solution and error bounds are computed because there are a number of situations where the computed solution can be more accurate than the value of RCOND would suggest. lowkey surprising but fr fr 🀯

πŸ‘‘ Author πŸ‘‘

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

🫢 Author 🫢

Generated automatically by Doxygen for LAPACK from the source code.


That's the whole vibe, bestie. This page is serving LAPACK version 3.11.0, dated Sun Nov 27 2022, and it's literally complex16GTsolve(3). Stay singular-free! πŸ’–βœ¨

πŸ“¦ where this page comes from