hesv_aa_2stage(3)

πŸ’– hesv_aa_2stage β€” the {he,sy}sv_aa_2stage page, aka Aasen, blocked 2-stage πŸ’–

okay so bestie, this is the hesv_aa_2stage(3) manual β€” Library Functions Manual energy, and it's giving linear algebra but make it fashion. no cap, it's a whole family of routines and we're gonna meet every single one. 🫢


✨ NAME ✨

hesv_aa_2stage β€” {he,sy}sv_aa_2stage: Aasen, blocked 2-stage. that's the whole name, that's the whole vibe. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions πŸŽ€

  • chesv_aa_2stage β€” subroutine chesv_aa_2stage (uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, work, lwork, info) CHESV_AA_2STAGE computes the solution to system of linear equations A * X = B for HE matrices
  • csysv_aa_2stage β€” subroutine csysv_aa_2stage (uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, work, lwork, info) CSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices
  • dsysv_aa_2stage β€” subroutine dsysv_aa_2stage (uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, work, lwork, info) DSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices
  • ssysv_aa_2stage β€” subroutine ssysv_aa_2stage (uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, work, lwork, info) SSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices
  • zhesv_aa_2stage β€” subroutine zhesv_aa_2stage (uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, work, lwork, info) ZHESV_AA_2STAGE computes the solution to system of linear equations A * X = B for HE matrices
  • zsysv_aa_2stage β€” subroutine zsysv_aa_2stage (uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, work, lwork, info) ZSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices

like, six routines, one aesthetic. c/z are the complex girlies, s/d are the real ones, he is Hermitian, sy is symmetric. iykyk 🌈


🌸 Detailed Description 🌸

okay so this section is literally just the doorway β€” the actual tea gets spilled under Function Documentation below. buckle up, we're going routine by routine, parameter by parameter, and yes we are reading all of them. πŸ’€


πŸ‘‘ Function Documentation πŸ‘‘

⭐ chesv_aa_2stage ⭐

subroutine chesv_aa_2stage (character uplo, integer n, integer nrhs,
    complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) tb,
    integer ltb, integer, dimension( * ) ipiv, integer, dimension( * )
    ipiv2, complex, dimension( ldb, * ) b, integer ldb, complex, dimension(
    * ) work, integer lwork, integer info)

CHESV_AA_2STAGE computes the solution to system of linear equations A * X = B for HE matrices. πŸ’œ

🧚 Purpose 🧚

CHESV_AA_2STAGE computes the solution to a complex system of linear equations

A * X = B,

where A is an N-by-N Hermitian matrix and X and B are N-by-NRHS matrices.

Aasen's 2-stage algorithm is used to factor A as

A = U**H * T * U,  if UPLO = 'U', or
A = L * T * L**H,  if UPLO = 'L',

where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is Hermitian and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B. πŸ”₯

This is the blocked version of the algorithm, calling Level 3 BLAS. (blocked = she ate and left no crumbs, Level 3 BLAS = the good stuff. ✨)

πŸ’… Parameters πŸ’…

  • UPLO β€” UPLO is CHARACTER*1
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • 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.
  • A β€” A is COMPLEX array, dimension (LDA,N) On entry, the hermitian matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.

On exit, L is stored below (or above) the subdiagonal blocks, when UPLO is 'L' (or 'U'). πŸ¦‹

  • LDA β€” LDA is INTEGER The leading dimension of the array A. LDA >= max(1,N).
  • TB β€” TB is COMPLEX array, dimension (MAX(1,LTB)) On exit, details of the LU factorization of the band matrix.
  • LTB β€” LTB is INTEGER The size of the array TB. LTB >= MAX(1,4*N), internally used to select NB such that LTB >= (3*NB+1)*N.

If LTB = -1, then a workspace query is assumed; the routine only calculates the optimal size of LTB, returns this value as the first entry of TB, and no error message related to LTB is issued by XERBLA. πŸ‘€ (yes, the -1 trick β€” it's the "just tell me how much room i need" move)

  • IPIV β€” IPIV is INTEGER array, dimension (N) On exit, it contains the details of the interchanges, i.e., the row and column k of A were interchanged with the row and column IPIV(k).
  • IPIV2 β€” IPIV2 is INTEGER array, dimension (N) On exit, it contains the details of the interchanges, i.e., the row and column k of T were interchanged with the row and column IPIV(k).
  • B β€” B is COMPLEX array, dimension (LDB,NRHS) On entry, the right hand side matrix B.

On exit, the solution matrix X. πŸŽ€ (she transforms!!)

  • LDB β€” LDB is INTEGER The leading dimension of the array B. LDB >= max(1,N).
  • WORK β€” WORK is COMPLEX workspace of size (MAX(1,LWORK)) On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  • LWORK β€” LWORK is INTEGER The size of WORK. LWORK >= MAX(1,N), internally used to select NB such that LWORK >= N*NB.

If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.

  • INFO β€” INFO is INTEGER
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value.
    • > 0: if INFO = i, band LU factorization failed on i-th column πŸ’€

🌟 Author 🌟

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 184 of file chesv_aa_2stage.f.


πŸ¦‹ csysv_aa_2stage πŸ¦‹

subroutine csysv_aa_2stage (character uplo, integer n, integer nrhs,
    complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) tb,
    integer ltb, integer, dimension( * ) ipiv, integer, dimension( * )
    ipiv2, complex, dimension( ldb, * ) b, integer ldb, complex, dimension(
    * ) work, integer lwork, integer info)

CSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices. πŸ’™

🧚 Purpose 🧚

CSYSV_AA_2STAGE computes the solution to a complex system of linear equations

A * X = B,

where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.

Aasen's 2-stage algorithm is used to factor A as

A = U**T * T * U,  if UPLO = 'U', or
A = L * T * L**T,  if UPLO = 'L',

where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B. πŸ”₯

This is the blocked version of the algorithm, calling Level 3 BLAS. ✨

πŸ’… Parameters πŸ’…

  • UPLO β€” UPLO is CHARACTER*1
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • 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.
  • A β€” A is COMPLEX array, dimension (LDA,N) On entry, the symmetric matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.

On exit, L is stored below (or above) the subdiagonal blocks, when UPLO is 'L' (or 'U'). πŸ¦‹

  • LDA β€” LDA is INTEGER The leading dimension of the array A. LDA >= max(1,N).
  • TB β€” TB is COMPLEX array, dimension (LTB) On exit, details of the LU factorization of the band matrix.
  • LTB β€” LTB is INTEGER The size of the array TB. LTB >= 4*N, internally used to select NB such that LTB >= (3*NB+1)*N.

If LTB = -1, then a workspace query is assumed; the routine only calculates the optimal size of LTB, returns this value as the first entry of TB, and no error message related to LTB is issued by XERBLA. πŸ‘€

  • IPIV β€” IPIV is INTEGER array, dimension (N) On exit, it contains the details of the interchanges, i.e., the row and column k of A were interchanged with the row and column IPIV(k).
  • IPIV2 β€” IPIV2 is INTEGER array, dimension (N) On exit, it contains the details of the interchanges, i.e., the row and column k of T were interchanged with the row and column IPIV(k).
  • B β€” B is COMPLEX array, dimension (LDB,NRHS) On entry, the right hand side matrix B.

On exit, the solution matrix X. πŸŽ€

  • LDB β€” LDB is INTEGER The leading dimension of the array B. LDB >= max(1,N).
  • WORK β€” WORK is COMPLEX workspace of size LWORK
  • LWORK
  • LWORK β€” okay so LWORK is an INTEGER, and it’s literally the size of WORK. For this one, LWORK >= N, and internally it’s used to pick NB such that LWORK >= N*NB. 🫢
If LWORK = -1, then a workspace query is assumed, bestie: the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. πŸ’…
  • INFO β€” INTEGER, and here’s the vibe check:
    • = 0: successful exit ✨
    • < 0: if INFO = -i, the i-th argument had an illegal value 😭
    • > 0: if INFO = i, band LU factorization failed on i-th column πŸ’€

Author

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

Definition at line 183 of file csysv_aa_2stage.f.


🌟 dsysv_aa_2stage 🌟

subroutine dsysv_aa_2stage (character uplo, integer n, integer nrhs, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) tb, integer ltb, integer, dimension( * ) ipiv, integer, dimension( * ) ipiv2, double precision, dimension( ldb, * ) b, integer ldb, double precision, dimension( * ) work, integer lwork, integer info)

DSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices. πŸ‘‘

Purpose

Bestie, DSYSV_AA_2STAGE computes the solution to a real system of linear equations

A * X = B,

where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices. πŸ¦‹

Aasen’s 2-stage algorithm is used to factor A as

A = U**T * T * U,  if UPLO = 'U', or
A = L * T * L**T,  if UPLO = 'L',

where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B. πŸ”₯

This is the blocked version of the algorithm, calling Level 3 BLAS. πŸ‘‘

Parameters

  • UPLO β€” CHARACTER*1. 'U' means the upper triangle of A is stored; 'L' means the lower triangle of A is stored. πŸ’…
  • N β€” INTEGER. The order of the matrix A. N >= 0. ✨
  • NRHS β€” INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0. πŸŽ€
  • A β€” DOUBLE PRECISION array, dimension (LDA,N). On entry, the symmetric matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. πŸ¦‹

On exit, L is stored below (or above) the subdiagonal blocks, when UPLO is 'L' (or 'U'). 😌

  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N). 🌸
  • TB β€” DOUBLE PRECISION array, dimension (MAX(1,LTB)). On exit, details of the LU factorization of the band matrix. πŸ’–
  • LTB β€” INTEGER. The size of the array TB. LTB >= MAX(1,4*N), internally used to select NB such that LTB >= (3*NB+1)*N. 🫢
If LTB = -1, then a workspace query is assumed; the routine only calculates the optimal size of LTB, returns this value as the first entry of TB, and no error message related to LTB is issued by XERBLA. πŸ’…
  • IPIV β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of A were interchanged with the row and column IPIV(k). πŸ”
  • IPIV2 β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of T were interchanged with the row and column IPIV(k). πŸ”
  • B β€” DOUBLE PRECISION array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X. 🌈
  • LDB β€” INTEGER. The leading dimension of the array B. LDB >= max(1,N). ⭐
  • WORK β€” DOUBLE PRECISION workspace of size (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. 🧚
  • LWORK β€” INTEGER. The size of WORK. LWORK >= MAX(1,N), internally used to select NB such that LWORK >= N*NB. πŸ’œ
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. πŸ’…
  • INFO β€” INTEGER.
    • = 0: successful exit ✨
    • < 0: if INFO = -i, the i-th argument had an illegal value. 😭
    • > 0: if INFO = i, band LU factorization failed on i-th column. πŸ’€

Author

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

Definition at line 186 of file dsysv_aa_2stage.f.


πŸ’œ ssysv_aa_2stage πŸ’œ

subroutine ssysv_aa_2stage (character uplo, integer n, integer nrhs, real, dimension( lda, * ) a, integer lda, real, dimension( * ) tb, integer ltb, integer, dimension( * ) ipiv, integer, dimension( * ) ipiv2, real, dimension( ldb, * ) b, integer ldb, real, dimension( * ) work, integer lwork, integer info)

SSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices. πŸŽ€

Purpose

SSYSV_AA_2STAGE computes the solution to a real system of linear equations

A * X = B,

where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices. 🌸

Aasen’s 2-stage algorithm is used to factor A as

A = U**T * T * U,  if UPLO = 'U', or
A = L * T * L**T,  if UPLO = 'L',

where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B. πŸ”₯

This is the blocked version of the algorithm, calling Level 3 BLAS. πŸ‘‘

Parameters

  • UPLO β€” CHARACTER*1. 'U' means the upper triangle of A is stored; 'L' means the lower triangle of A is stored. πŸ’…
  • N β€” INTEGER. The order of the matrix A. N >= 0. ✨
  • NRHS β€” INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0. πŸŽ€
  • A β€” REAL array, dimension (LDA,N). On entry, the symmetric matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. πŸ¦‹

On exit, L is stored below (or above) the subdiagonal blocks, when UPLO is 'L' (or 'U'). 😌

  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N). 🌸
  • TB β€” REAL array, dimension (MAX(1,LTB)). On exit, details of the LU factorization of the band matrix. πŸ’–
  • LTB β€” INTEGER. The size of the array TB. LTB >= MAX(1,4*N), internally used to select NB such that LTB >= (3*NB+1)*N. 🫢
If LTB = -1, then a workspace query is assumed; the routine only calculates the optimal size of LTB, returns this value as the first entry of TB, and no error message related to LTB is issued by XERBLA. πŸ’…
  • IPIV β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of A were interchanged with the row and column IPIV(k). πŸ”
  • IPIV2 β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of T were interchanged with the row and column IPIV(k). πŸ”
  • B β€” REAL array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X. 🌈
  • LDB β€” INTEGER. The leading dimension of the array B. LDB >= max(1,N). ⭐
  • WORK β€” REAL workspace of size (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. 🧚
  • LWORK β€” INTEGER. The size of WORK. LWORK >= MAX(1,N), internally used to select NB such that LWORK >= N*NB. πŸ’œ
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. πŸ’…
  • INFO β€”
  • INFO is INTEGER β€” the receipts, basically:
    • = 0: slayed, successful exit πŸ’…
    • < 0: if INFO = -i, the i-th argument had an illegal value (someone did NOT read the docs 😭)
    • > 0: if INFO = i, band LU factorization failed on i-th column

πŸ’– Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

πŸ“ Definition

At line 185 of file ssysv_aa_2stage.f.


πŸ¦‹ subroutine zhesv_aa_2stage

subroutine zhesv_aa_2stage (character uplo, integer n, integer nrhs, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tb, integer ltb, integer, dimension( * ) ipiv, integer, dimension( * ) ipiv2, complex*16, dimension( ldb, * ) b, integer ldb, complex*16, dimension( * ) work, integer lwork, integer info)

ZHESV_AA_2STAGE computes the solution to system of linear equations A * X = B for HE matrices. yes bestie, the Hermitian one, we're in the z era now ✨

πŸŽ€ Purpose

okay so ZHESV_AA_2STAGE computes the solution to a complex system of linear equations

   A * X = B,

where A is an N-by-N Hermitian matrix and X and B are N-by-NRHS matrices.

Aasen's 2-stage algorithm is used to factor A as

   A = U**H * T * U,  if UPLO = 'U', or
   A = L * T * L**H,  if UPLO = 'L',

where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is Hermitian and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B.

This is the blocked version of the algorithm, calling Level 3 BLAS πŸ”₯ (blocked = faster, we love to see it).

✨ Parameters

  • UPLO β€” CHARACTER*1
    • = 'U': upper triangle of A is stored
    • = 'L': lower triangle of A is stored
  • N β€” INTEGER. The order of the matrix A. N >= 0.
  • NRHS β€” INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.
  • A β€” COMPLEX*16 array, dimension (LDA,N). On entry, the hermitian matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.

On exit, L is stored below (or above) the subdiagonal blocks, when UPLO is 'L' (or 'U').

  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • TB β€” COMPLEX*16 array, dimension (MAX(1,LTB)). On exit, details of the LU factorization of the band matrix.
  • LTB β€” INTEGER. The size of the array TB. LTB >= MAX(1,4*N), internally used to select NB such that LTB >= (3*NB+1)*N.

If LTB = -1, then a workspace query is assumed; the routine only calculates the optimal size of LTB, returns this value as the first entry of TB, and no error message related to LTB is issued by XERBLA.

  • IPIV β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of A were interchanged with the row and column IPIV(k).
  • IPIV2 β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of T were interchanged with the row and column IPIV(k).
  • B β€” COMPLEX*16 array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X πŸ’…
  • LDB β€” INTEGER. The leading dimension of the array B. LDB >= max(1,N).
  • WORK β€” COMPLEX*16 workspace of size (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  • LWORK β€” INTEGER. The size of WORK. LWORK >= MAX(1,N), internally used to select NB such that LWORK >= N*NB.

If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.

  • INFO β€” INTEGER
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value
    • > 0: if INFO = i, band LU factorization failed on i-th column

πŸ’– Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

πŸ“ Definition

At line 185 of file zhesv_aa_2stage.f.


🌸 subroutine zsysv_aa_2stage

subroutine zsysv_aa_2stage (character uplo, integer n, integer nrhs, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tb, integer ltb, integer, dimension( * ) ipiv, integer, dimension( * ) ipiv2, complex*16, dimension( ldb, * ) b, integer ldb, complex*16, dimension( * ) work, integer lwork, integer info)

ZSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices. symmetric this time, not hermitian β€” know the difference bestie, it's giving attention to detail πŸŽ€

πŸŽ€ Purpose

okay so ZSYSV_AA_2STAGE computes the solution to a complex system of linear equations

   A * X = B,

where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.

Aasen's 2-stage algorithm is used to factor A as

   A = U**T * T * U,  if UPLO = 'U', or
   A = L * T * L**T,  if UPLO = 'L',

where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B.

This is the blocked version of the algorithm, calling Level 3 BLAS πŸ”₯ (transposes here, conjugates in zhesv β€” that's the whole vibe difference, iykyk).

✨ Parameters

  • UPLO β€” CHARACTER*1
    • = 'U': upper triangle of A is stored
    • = 'L': lower triangle of A is stored
  • N β€” INTEGER. The order of the matrix A. N >= 0.
  • NRHS β€” INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.
  • A β€” COMPLEX*16 array, dimension (LDA,N). On entry, the symmetric matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.

On exit, L is stored below (or above) the subdiagonal blocks, when UPLO is 'L' (or 'U').

  • LDA β€” INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • TB β€” COMPLEX*16 array, dimension (LTB). On exit, details of the LU factorization of the band matrix.
  • LTB β€” INTEGER. The size of the array TB. LTB >= 4*N, internally used to select NB such that LTB >= (3*NB+1)*N.

If LTB = -1, then a workspace query is assumed; the routine only calculates the optimal size of LTB, returns this value as the first entry of TB, and no error message related to LTB is issued by XERBLA.

  • IPIV β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of A were interchanged with the row and column IPIV(k).
  • IPIV2 β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of T were interchanged with the row and column IPIV(k).
  • B β€” COMPLEX*16 array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X πŸ’…
  • LDB β€” INTEGER. The leading dimension of the array B. LDB >= max(1,N).
  • WORK β€” COMPLEX*16 workspace of size LWORK.
  • LWORK β€” INTEGER. The size of WORK. LWORK >= N, internally used to select NB such that LWORK >= N*NB.

If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.

  • INFO β€” INTEGER
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value
    • > 0: if INFO = i, band LU factorization failed on i-th column

πŸ’– Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

πŸ“ Definition

At line 183 of file zsysv_aa_2stage.f.


πŸ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code. (the robots wrote this one, not me, but they ate fr fr πŸ€–βœ¨)


okay that's the whole page bestie, you're officially a hesv_aa_2stage(3) expert πŸ’œ this gorgeousness is LAPACK, Version 3.12.0, and the page tag is hesv_aa_2stage(3) β€” go forth and solve those systems, mwah πŸŽ€πŸ¦‹πŸ’…

πŸ“¦ where this page comes from