syconvf(3)
syconvf(3) β the syconvf page π
okay bestie, welcome to the Library Functions Manual entry for syconvf. this is the girly who converts your factorization between the plain hetrf / sytrf format and the fancy hetrf_rk / sytrf_rk (or _bk) format. she does both directions. she does all four precisions. she does not do small talk. β¨
πΈ NAME πΈ
syconvf β syconvf: convert to/from hetrf to hetrf_rk format
like, the whole thing. the conversion. that's her job. π
π SYNOPSIS π
β¨ Functions β¨
subroutine csyconvf (uplo, way, n, a, lda, e, ipiv, info)β CSYCONVFsubroutine dsyconvf (uplo, way, n, a, lda, e, ipiv, info)β DSYCONVFsubroutine ssyconvf (uplo, way, n, a, lda, e, ipiv, info)β SSYCONVFsubroutine zsyconvf (uplo, way, n, a, lda, e, ipiv, info)β ZSYCONVF
four flavors, one vibe. pick your precision, babe. π
π¦ Detailed Description π¦
okay so this is the section that's literally just the heading doing the heavy lifting, and then the actual goods live down in Function Documentation. no cap, that's the real content, keep scrolling. π
π Function Documentation π
π subroutine csyconvf
subroutine csyconvf (character uplo, character way, integer n,
complex, dimension( lda, * ) a, integer lda,
complex, dimension( * ) e, integer, dimension( * ) ipiv,
integer info)
CSYCONVF β the complex single-precision one. she's the main character here, first one on the page. π«Ά
π₯ Purpose π₯
- If parameter
WAY = 'C':CSYCONVFconverts the factorization output format used inCSYTRFprovided on entry in parameterAinto the factorization output format used inCSYTRF_RK(orCSYTRF_BK) that is stored on exit in parametersAandE. It also converts in place details of the interchanges stored inIPIVfrom the format used inCSYTRFinto the format used inCSYTRF_RK(orCSYTRF_BK). - If parameter
WAY = 'R':CSYCONVFperforms the conversion in reverse direction, i.e. converts the factorization output format used inCSYTRF_RK(orCSYTRF_BK) provided on entry in parametersAandEinto the factorization output format used inCSYTRFthat is stored on exit in parameterA. It also converts in place details of the interchanges stored inIPIVfrom the format used inCSYTRF_RK(orCSYTRF_BK) into the format used inCSYTRF. CSYCONVFcan also convert in Hermitian matrix case, i.e. between formats used inCHETRFandCHETRF_RK(orCHETRF_BK). yes she's versatile like that π
π Parameters π
UPLO
UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored as an upper or lower triangular matrix A.
= 'U':Upper triangular= 'L':Lower triangular
WAY
WAY is CHARACTER*1
= 'C':Convert= 'R':Revert
convert or revert. two moods. pick one. π
N
N is INTEGER
The order of the matrix A. N >= 0.
A
A is COMPLEX array, dimension (LDA,N)
- 1) If
WAY ='C':- On entry, contains factorization details in format used in
CSYTRF:- a) all elements of the symmetric block diagonal matrix
Don the diagonal ofAand on superdiagonal (or subdiagonal) ofA, and - b) If
UPLO = 'U': multipliers used to obtain factorUin the superdiagonal part ofA. IfUPLO = 'L': multipliers used to obtain factorLin the superdiagonal part ofA.
- a) all elements of the symmetric block diagonal matrix
- On exit, contains factorization details in format used in
CSYTRF_RKorCSYTRF_BK:- a) ONLY diagonal elements of the symmetric block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - b) If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA.
- a) ONLY diagonal elements of the symmetric block diagonal matrix
- On entry, contains factorization details in format used in
- 2) If
WAY = 'R':- On entry, contains factorization details in format used in
CSYTRF_RKorCSYTRF_BK:- a) ONLY diagonal elements of the symmetric block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - b) If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA.
- a) ONLY diagonal elements of the symmetric block diagonal matrix
- On exit, contains factorization details in format used in
CSYTRF:- a) all elements of the symmetric block diagonal matrix
Don the diagonal ofAand on superdiagonal (or subdiagonal) ofA, and - b) If
UPLO = 'U': multipliers used to obtain factorUin the superdiagonal part ofA. IfUPLO = 'L': multipliers used to obtain factorLin the superdiagonal part ofA.
- a) all elements of the symmetric block diagonal matrix
- On entry, contains factorization details in format used in
note how entry and exit literally swap places depending on WAY. it's giving mirror. it's giving reversible jacket. π§
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >= max(1,N).
E
E is COMPLEX array, dimension (N)
- 1) If
WAY ='C':- On entry, just a workspace.
- On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix
Dwith 1-by-1 or 2-by-2 diagonal blocks, where- If
UPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)is set to 0; - If
UPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to 0.
- If
- 2) If
WAY = 'R':- On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix
Dwith 1-by-1 or 2-by-2 diagonal blocks, where- If
UPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)not referenced; - If
UPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)not referenced.
- If
- On exit, is not changed
- On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix
bestie the E array is literally the workspace-turned-storage glow-up in one direction and untouched baggage in the other. iconic behavior. π
IPIV
IPIV is INTEGER array, dimension (N)
- 1) If
WAY ='C': On entry, details of the interchanges and the block structure ofDin the format used inCSYTRF. On exit, details of the interchanges and the block structure ofDin the format used inCSYTRF_RK( orCSYTRF_BK). - 1) If
WAY ='R': On entry, details of the interchanges and the block structure ofDin the format used inCSYTRF_RK( orCSYTRF_BK). On exit, details of the interchanges and the block structure ofDin the format used inCSYTRF.
ok yes, the list numbers are1)and then1)again β that's exactly how the page has it, and we are not about to go fixing the original's numbering. we report, we don't edit. π
INFO
INFO is INTEGER
= 0:successful exit< 0:ifINFO = -i, thei-th argument had an illegal value
negative INFO means somebody handed her a bad argument and she's telling you which one by index. read the number, fix the argument, try again. π₯
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π«Ά Contributors: π«Ά
- November 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley
β Definition β
Definition at line 208 of file csyconvf.f.
π¦ subroutine dsyconvf
subroutine dsyconvf (character uplo, character way, integer n,
double precision, dimension( lda, * ) a, integer lda,
double precision, dimension( * ) e, integer, dimension( * ) ipiv,
integer info)
DSYCONVF β same gig, double precision edition. she's the sensible older sister and she keeps every single detail identical. β¨
π₯ Purpose π₯
- If parameter
WAY = 'C':DSYCONVFconverts the factorization output format used inDSYTRFprovided on entry in parameterAinto the factorization output format used inDSYTRF_RK(orDSYTRF_BK) that is stored on exit in parametersAandE. It also converts in place details of the interchanges stored inIPIVfrom the format used inDSYTRFinto the format used inDSYTRF_RK(orDSYTRF_BK). - If parameter
WAY = 'R':DSYCONVFperforms the conversion in reverse direction, i.e. converts the factorization output format used inDSYTRF_RK(orDSYTRF_BK) provided on entry in parametersAandEinto the factorization output format used inDSYTRFthat is stored on exit in parameterA. It also converts in place details of the interchanges stored inIPIVfrom the format used inDSYTRF_RK(orDSYTRF_BK) into the format used inDSYTRF.
heads up: unlikeCSYCONVFup there, thisPurposeblock has no Hermitian-matrix extra paragraph. we're not adding one. we don't invent lore. π
π Parameters π
UPLO
UPLO is CHARACTER*1
Specifies whether the details of the factorization are stored as an upper or lower triangular matrix A.
= 'U':Upper triangular= 'L':Lower triangular
WAY
WAY is CHARACTER*1
= 'C':Convert= 'R':Revert
N
N is INTEGER
The order of the matrix A. N >= 0.
Aβ and this is literally where part 1 of the page runs out, bestie. theAparameter details are coming in the next chunk, so hold that thought π
A is a DOUBLE PRECISION array, dimension (LDA,N) β and bestie, this array is literally the main character of the whole operation, so pay attention π
- If
WAY ='C':
On entry, it holds factorization details in the format used in DSYTRF, like:
- a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and
- b) If
UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. IfUPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A.
On exit, it holds factorization details in the format used in DSYTRF_RK or DSYTRF_BK:
- a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), and - b) If
UPLO = 'U': factor U in the superdiagonal part of A. IfUPLO = 'L': factor L in the subdiagonal part of A.
- If
WAY = 'R':
On entry, it holds factorization details in the format used in DSYTRF_RK or DSYTRF_BK:
- a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), and - b) If
UPLO = 'U': factor U in the superdiagonal part of A. IfUPLO = 'L': factor L in the subdiagonal part of A.
On exit, it holds factorization details in the format used in DSYTRF:
- a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and
- b) If
UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. IfUPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A.
LDA β INTEGER energy, and it's giving "how much room did you book." It's the leading dimension of the array A. The rule, no cap: LDA >= max(1,N) π
E β DOUBLE PRECISION array, dimension (N). She's the sidekick that lowkey carries the tea π«
- If
WAY ='C':
On entry, she's just a workspace. Literally nothing going on, unemployed, feral.
On exit, she contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
- If
UPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)is set to 0; - If
UPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to 0.
- If
WAY = 'R':
On entry, she contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
- If
UPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)not referenced; - If
UPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)not referenced.
On exit, she is not changed. Iconic behavior honestly β she simply refuses to be altered π
IPIV β INTEGER array, dimension (N). The receipts π
- If
WAY ='C': On entry, details of the interchanges and the block structure of D in the format used inDSYTRF. On exit, details of the interchanges and the block structure of D in the format used inDSYTRF_RK( orDSYTRF_BK). - If
WAY ='R': On entry, details of the interchanges and the block structure of D in the format used inDSYTRF_RK( orDSYTRF_BK). On exit, details of the interchanges and the block structure of D in the format used inDSYTRF.
INFO β INTEGER, the vibe check at the end of the run π¦
= 0: successful exit β slay, we ate, nothing to see here β¨< 0: ifINFO = -i, the i-th argument had an illegal value β yeah, someone handed you a bad argument, that's a you problem bestie π
πΈ Author πΈ
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π Contributors π
November 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley
Definition at line 205 of file dsyconvf.f.
π subroutine ssyconvf π
Okay so now we do it all again but in REAL β same lore, single precision this time, and honestly? Still iconic:
subroutine ssyconvf (character uplo, character way, integer n, real,
dimension( lda, * ) a, integer lda, real, dimension( * ) e, integer,
dimension( * ) ipiv, integer info)
π SSYCONVF π
β¨ Purpose β¨
So here's the whole point of this little function, laid out for you:
If parameter WAY = 'C': SSYCONVF converts the factorization output format used in SSYTRF provided on entry in parameter A into the factorization output format used in SSYTRF_RK (or SSYTRF_BK) that is stored on exit in parameters A and E. It also converts in place details of the interchanges stored in IPIV from the format used in SSYTRF into the format used in SSYTRF_RK (or SSYTRF_BK).
If parameter WAY = 'R': SSYCONVF performs the conversion in reverse direction, i.e. converts the factorization output format used in SSYTRF_RK (or SSYTRF_BK) provided on entry in parameters A and E into the factorization output format used in SSYTRF that is stored on exit in parameter A. It also converts in place details of the interchanges stored in IPIV from the format used in SSYTRF_RK (or SSYTRF_BK) into the format used in SSYTRF.
So basically it's a translator between two friend groups who refuse to use the same slang π«Ά
β¨ Parameters β¨
UPLO β UPLO is CHARACTER*1. It says whether the details of the factorization are stored as an upper or lower triangular matrix A.
= 'U': Upper triangular= 'L': Lower triangular
WAY β WAY is CHARACTER*1, the direction of the whole commute π
= 'C': Convert= 'R': Revert
N β N is INTEGER. The order of the matrix A. And listen: N >= 0. Zero is allowed, negative is not, don't try it π
A β A is REAL array, dimension (LDA,N). Same deal as the double version, just REAL now:
- If
WAY ='C':
On entry, contains factorization details in format used in SSYTRF:
- a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and
- b) If
UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. IfUPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A.
On exit, contains factorization details in format used in SSYTRF_RK or SSYTRF_BK:
- a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), and - b) If
UPLO = 'U': factor U in the superdiagonal part of A. IfUPLO = 'L': factor L in the subdiagonal part of A.
- If
WAY = 'R':
On entry, contains factorization details in format used in SSYTRF_RK or SSYTRF_BK:
- a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), and - b) If
UPLO = 'U': factor U in the superdiagonal part of A. IfUPLO = 'L': factor L in the subdiagonal part of A.
On exit, contains factorization details in format used in SSYTRF:
- a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and
- b) If
UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. IfUPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A.
LDA β LDA is INTEGER. The leading dimension of the array A, and again: LDA >= max(1,N). Non-negotiable, it's the rule π
E β E is REAL array, dimension (N). Round two of the sidekick arc:
- If
WAY ='C':
On entry, just a workspace. (Again. Poor thing.)
On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
- If
UPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)is set to 0; - If
UPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to 0.
- If
WAY = 'R':
On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
- If
UPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)not referenced; - If
UPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)not referenced.
On exit, is not changed. Queen stays exactly as she is, we respect it π
IPIV
IPIVβINTEGER array, dimension (N). The receipts for the pivoting π- If
WAY = 'C': on entry, it's the interchanges + block structure ofDin the format used inSSYTRF. On exit, it's the interchanges + block structure ofDin the format used inSSYTRF_RK(orSSYTRF_BK). - If
WAY = 'R': on entry, it's the interchanges + block structure ofDin the format used inSSYTRF_RK(orSSYTRF_BK). On exit, it's the interchanges + block structure ofDin the format used inSSYTRF.
- If
okay yes, the original literally numbers both of those as "1)" β not a typo I made, she's just like that π either way the deal is:'C'goes SSYTRF β SSYTRF_RK/BK,'R'goes the other way. Same info, opposite directions, no cap.
INFOβINTEGER. The vibe report at the end π= 0: successful exit β she ate, no notes β¨< 0: ifINFO = -i, the i-th argument had an illegal value β so go check argument number i, bestie π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π«Ά Contributors:
November 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley
Definition at line 205 of file ssyconvf.f.
π subroutine zsyconvf
subroutine zsyconvf (character uplo, character way, integer n, complex*16,
dimension( lda, * ) a, integer lda, complex*16, dimension( * ) e,
integer, dimension( * ) ipiv, integer info)
ZSYCONVF β the complex*16 sibling of the one we just did, and she's serving the exact same energy π¦
πΈ Purpose:
If parameter WAY = 'C': ZSYCONVF converts the factorization output format used in ZSYTRF provided on entry in parameter A into the factorization output format used in ZSYTRF_RK (or ZSYTRF_BK) that is stored on exit in parameters A and E. It also converts in place details of the interchanges stored in IPIV from the format used in ZSYTRF into the format used in ZSYTRF_RK (or ZSYTRF_BK).
If parameter WAY = 'R': ZSYCONVF performs the conversion in reverse direction, i.e. converts the factorization output format used in ZSYTRF_RK (or ZSYTRF_BK) provided on entry in parameters A and E into the factorization output format used in ZSYTRF that is stored on exit in parameter A. It also converts in place details of the interchanges stored in IPIV from the format used in ZSYTRF_RK (or ZSYTRF_BK) into the format used in ZSYTRF.
ZSYCONVF can also convert in Hermitian matrix case, i.e. between formats used in ZHETRF and ZHETRF_RK (or ZHETRF_BK). π§ icon behaviour honestly
β¨ Parameters
UPLOβCHARACTER*1. Specifies whether the details of the factorization are stored as an upper or lower triangular matrixAπ= 'U': Upper triangular= 'L': Lower triangular
WAYβCHARACTER*1. Which direction we're going, queen π= 'C': Convert= 'R': Revert
NβINTEGER. The order of the matrixA.N >= 0. (Zero is allowed, she's flexible but not that flexible, keep it>= 0fr fr.)AβCOMPLEX*16 array, dimension (LDA,N). Main character energy, she's carrying the whole routine π- If
WAY = 'C':
- If
On entry, contains factorization details in format used in ZSYTRF:
- a) all elements of the symmetric block diagonal matrix
Don the diagonal ofAand on superdiagonal (or subdiagonal) ofA, and - b) If
UPLO = 'U': multipliers used to obtain factorUin the superdiagonal part ofA. IfUPLO = 'L': multipliers used to obtain factorLin the superdiagonal part ofA.
On exit, contains factorization details in format used in ZSYTRF_RK or ZSYTRF_BK:
- a) ONLY diagonal elements of the symmetric block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - b) If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA.
- If
WAY = 'R':
On entry, contains factorization details in format used in ZSYTRF_RK or ZSYTRF_BK:
- a) ONLY diagonal elements of the symmetric block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - b) If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA.
On exit, contains factorization details in format used in ZSYTRF:
- a) all elements of the symmetric block diagonal matrix
Don the diagonal ofAand on superdiagonal (or subdiagonal) ofA, and - b) If
UPLO = 'U': multipliers used to obtain factorUin the superdiagonal part ofA. IfUPLO = 'L': multipliers used to obtain factorLin the superdiagonal part ofA.
LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N). Don't skimp on her, she needs the room πEβCOMPLEX*16 array, dimension (N). The off-diagonal bestie π- If
WAY = 'C':
- If
On entry, just a workspace. She's literally just vibing, holding nothing, no thoughts head empty π
On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) is set to 0; If UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) is set to 0.
- If
WAY = 'R':
On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced; If UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) not referenced.
On exit, is not changed. She goes in the same, she comes out the same β iconic consistency, we love to see it β¨
IPIVβINTEGER array, dimension (N). Same receipts, complex edition π§Ύ- If
WAY = 'C': on entry, details of the interchanges and the block structure ofDin the format used inZSYTRF. On exit, details of the interchanges and the block structure ofDin the format used inZSYTRF_RK(orZSYTRF_BK). - If
WAY = 'R': on entry, details of the interchanges and the block structure ofDin the format used inZSYTRF_RK(orZSYTRF_BK). On exit, details of the interchanges and the block structure ofDin the format used inZSYTRF.
- If
and yes, the "1)" twice thing is in the source too. It's a family trait at this point, iykyk π
INFOβINTEGER. The final vibe check β= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π«Ά Contributors:
November 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley
Definition at line 208 of file zsyconvf.f.
π« Author
Generated automatically by Doxygen for LAPACK from the source code. (not a human, just a very diligent little robot π€β¨)
and that's the whole page, bestie β go forth and convert/revert those factorization formats with confidence π¦π
Source of this masterpiece: LAPACK, Version 3.12.0, from syconvf(3) β see you in the next manpage, mwah ππ
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms