SRC/ztrrfs.f(3)

πŸ’œ SRC/ztrrfs.f β€” the ztrrfs glow-up page

okay bestie, you found the manual page for SRC/ztrrfs.f ✨ this is the LAPACK library functions manual, and today's main character is ztrrfs. she's a Fortran subroutine and she's literally here to tell you how wrong your answer is (affectionately) πŸŽ€


✨ SYNOPSIS ✨

🌸 Functions/Subroutines

subroutine ztrrfs (uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx,
    ferr, berr, work, rwork, info)
    ZTRRFS

πŸ¦‹ Function/Subroutine Documentation

subroutine ztrrfs (character uplo, character trans, character diag, integer
    n, integer nrhs, complex*16, dimension( lda, * ) a, integer lda,
    complex*16, dimension( ldb, * ) b, integer ldb, complex*16, dimension(
    ldx, * ) x, integer ldx, double precision, dimension( * ) ferr, double
    precision, dimension( * ) berr, complex*16, dimension( * ) work, double
    precision, dimension( * ) rwork, integer info)
    ZTRRFS

🫢 PURPOSE

!> !> ZTRRFS provides error bounds and backward error estimates for the !> solution to a system of linear equations with a triangular !> coefficient matrix. !> !> The solution matrix X must be computed by ZTRTRS or some other !> means before entering this routine. ZTRRFS does not do iterative !> refinement because doing so cannot improve the backward error. !>

so like β€” she does not solve anything for you, bestie 😭 you gotta bring your own X, computed by ZTRTRS or some other means, before you walk in here. and before you ask: no, she does not do iterative refinement, because doing so cannot improve the backward error. she said what she said πŸ’…


🌈 PARAMETERS

πŸ“ UPLO

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

which triangle of A we're living in β€” 'U' for upper triangular, 'L' for lower triangular πŸ”₯

🧚 TRANS

!> TRANS is CHARACTER*1 !> Specifies the form of the system of equations: !> = 'N': A * X = B (No transpose) !> = 'T': AT * X = B (Transpose) !> = 'C': AH * X = B (Conjugate transpose) !>

the shape of the system, no cap:

  • 'N' β†’ A * X = B (no transpose)
  • 'T' β†’ A**T * X = B (transpose)
  • 'C' β†’ A**H * X = B (conjugate transpose)

πŸ’– DIAG

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

is A non-unit triangular ('N') or unit triangular ('U')? pick your fighter ⭐

πŸ‘‘

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

the order of the matrix A, and she must be N >= 0 πŸ™ˆ

πŸŽ€ NRHS

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

the number of right hand sides β€” a.k.a. how many columns the matrices B and X have. NRHS >= 0 fr fr.

🌸 A

!> A is COMPLEX*16 array, dimension (LDA,N) !> 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. !>

the triangular matrix herself πŸ’… 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. and if DIAG = 'U', the diagonal elements of A are also not referenced and are assumed to be 1. iconic behavior honestly.

πŸ¦‹ LDA

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

leading dimension of A. LDA >= max(1,N), periodt.

πŸ’œ B

!> B is COMPLEX*16 array, dimension (LDB,NRHS) !> The right hand side matrix B. !>

the right hand side matrix B, dimension (LDB,NRHS) 🫢

🌈 LDB

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

leading dimension of B. LDB >= max(1,N), iykyk.

⭐ X

!> X is COMPLEX*16 array, dimension (LDX,NRHS) !> The solution matrix X. !>

the solution matrix X, dimension (LDX,NRHS) β€” and remember, you brought this one yourself 😌

πŸ”₯ LDX

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

leading dimension of X. LDX >= max(1,N), no exceptions.

🧚 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. !>

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. so she's giving cautious queen energy, not wrong energy πŸ’€

🌸 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). !>

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) !>

workspace, COMPLEX*16 array, dimension (2*N) ✨

🫢 RWORK

!> RWORK is DOUBLE PRECISION array, dimension (N) !>

workspace but make it real, DOUBLE PRECISION array, dimension (N) πŸ’–

πŸ’… INFO

!> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !>

the vibe check at the end:

  • = 0: successful exit, slay πŸŽ‰
  • < 0: if INFO = -i, the i-th argument had an illegal value πŸ™ˆ

πŸ‘‘ AUTHOR

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

Definition at line 180 of file ztrrfs.f. πŸ¦‹


πŸ’œ AUTHOR (the meta one)

Generated automatically by Doxygen for LAPACK from the source code. yes, the docs wrote themselves, main character energy fr.


πŸŽ€ and that's the whole page bestie β€” every flag, every bound, every !> comment preserved with love. ztrrfs ate and left no crumbs πŸ’…

~ LAPACK, Version 3.12.0, SRC/ztrrfs.f(3) β€” mwah, see you in the next manpage 🫢✨

πŸ“¦ where this page comes from