CHPRFS(3)

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

πŸ’– CHPRFS(3) πŸ’–

okay so this is the chprfs.f(3) page from the Library Functions Manual β€” yes that whole giant build path is literally the NAME, don't come for me, that's just how Doxygen do. πŸŽ€ We're deep in LAPACK land, bestie, so grab a lil snack and let's go.


✨ SYNOPSIS ✨

🌸 Functions/Subroutines 🌸

subroutine CHPRFS (uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr,
    berr, work, rwork, info)

That's CHPRFS, icon behavior only.


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

subroutine CHPRFS (character uplo, integer n, integer nrhs, complex,
    dimension( * ) ap, complex, dimension( * ) afp, integer, dimension( * )
    ipiv, complex, dimension( ldb, * ) b, integer ldb, complex, dimension(
    ldx, * ) x, integer ldx, real, dimension( * ) ferr, real, dimension( * )
    berr, complex, dimension( * ) work, real, dimension( * ) rwork, integer
    info)

CHPRFS β€” main character, obvi. πŸ’…


🎯 Purpose

!> !> CHPRFS improves the computed solution to a system of linear !> equations when the coefficient matrix is Hermitian indefinite !> and packed, and provides error bounds and backward error estimates !> for the solution. !>

So like β€” you already solved your linear system, but the answer's a lil sus? CHPRFS is the glow-up step. It takes your solution, refines it, and hands you back error bounds and backward error estimates. Self-care, but for numerics. ✨


🌈 Parameters

  • UPLO β€” okay so this is a CHARACTER*1, and it tells us WHICH triangle we're fw with:
!> UPLO is CHARACTER*1 !> = 'U': Upper triangle of A is stored; !> = 'L': Lower triangle of A is stored. !>
  • N β€” an INTEGER, the order of the matrix A. Constraint era: N >= 0. No negatives, periodt.
!> N is INTEGER !> The order of the matrix A. N >= 0. !>
  • NRHS β€” an INTEGER, the number of right hand sides, i.e. the number of columns of the matrices B and X. Also NRHS >= 0. 🫢
!> NRHS is INTEGER !> The number of right hand sides, i.e., the number of columns !> of the matrices B and X. NRHS >= 0. !>
  • AP β€” a COMPLEX array, dimension (N*(N+1)/2). It's the upper or lower triangle of the Hermitian matrix A, packed columnwise in a linear array. The j-th column of A lives in AP like this:
!> AP is COMPLEX array, dimension (N*(N+1)/2) !> The upper or lower triangle of the Hermitian matrix A, packed !> columnwise in a linear array. The j-th column of A is stored !> in the array AP as follows: !> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; !> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. !>
  • AFP β€” a COMPLEX array, dimension (N*(N+1)/2). The factored form of the matrix A. It contains the block diagonal matrix D and the multipliers used to obtain the factor U or L from the factorization A = U*D*U**H or A = L*D*L**H as computed by CHPTRF, stored as a packed triangular matrix. She's already been through the factorization pipeline, respectfully. πŸ’œ
!> AFP is COMPLEX array, dimension (N*(N+1)/2) !> The factored form of the matrix A. AFP contains the block !> diagonal matrix D and the multipliers used to obtain the !> factor U or L from the factorization A = U*D*U**H or !> A = L*D*L**H as computed by CHPTRF, stored as a packed !> triangular matrix. !>
  • IPIV β€” an INTEGER array, dimension (N). All the details of the interchanges and the block structure of D, as determined by CHPTRF. iykyk. πŸ‘€
!> IPIV is INTEGER array, dimension (N) !> Details of the interchanges and the block structure of D !> as determined by CHPTRF. !>
  • B β€” a COMPLEX array, dimension (LDB,NRHS). The right hand side matrix B. That's her. πŸ“
!> B is COMPLEX array, dimension (LDB,NRHS) !> The right hand side matrix B. !>
  • LDB β€” an INTEGER, the leading dimension of the array B. LDB >= max(1,N). rules are rules πŸ’€
!> LDB is INTEGER !> The leading dimension of the array B. LDB >= max(1,N). !>
  • X β€” a COMPLEX array, dimension (LDX,NRHS). On entry: the solution matrix X, as computed by CHPTRS. On exit: the improved solution matrix X. glow-up complete, queen. πŸ‘‘
!> X is COMPLEX array, dimension (LDX,NRHS) !> On entry, the solution matrix X, as computed by CHPTRS. !> On exit, the improved solution matrix X. !>
  • LDX β€” an INTEGER, the leading dimension of the array X. LDX >= max(1,N). πŸ’…
!> LDX is INTEGER !> The leading dimension of the array X. LDX >= max(1,N). !>
  • FERR β€” a REAL array, dimension (NRHS). The estimated forward error bound for each solution vector X(j) (that's the j-th column of the solution matrix X). If XTRUE is the true solution corresponding to X(j), then 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 it's almost always a slight overestimate of the true error β€” she's cautious, not wrong. 😭
!> FERR is REAL 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 β€” a REAL 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. fr fr, that's the whole definition.
!> BERR is REAL 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 β€” a COMPLEX array, dimension (2*N). scratch space, no notes. 🧚
!> WORK is COMPLEX array, dimension (2*N) !>
  • RWORK β€” a REAL array, dimension (N). also scratch space.
!> RWORK is REAL array, dimension (N) !>
  • INFO β€” an INTEGER, the vibe check:
!> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !>

πŸ”₯ Internal Parameters:

!> ITMAX is the maximum number of steps of iterative refinement. !>

That's it, that's the internal parameter. ITMAX β€” the max number of iterative refinement steps. lowkey the most important lil number in the room. ⭐


🌸 Author

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

Absolute legends, all of them. 🫢

Definition at line 178 of file chprfs.f.


πŸ¦‹ Author

Generated automatically by Doxygen for LAPACK from the source code. Not a human, just a very diligent robot. πŸ€–πŸ’–


okay bye bestie, go refine some solutions β€” and remember, this whole page is from LAPACK, Version 3.12.0, autogenerated from /home/abui...RC/chprfs.f(3) in the Library Functions Manual. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from