sglgesylv(3)
πΈ NAME πΈ
<hotpink>sglgesylv</hotpink> β it's the Single Precision page, bestie. MEPACK, section 3, you know the vibe. π
- Single Precision routines for standard Sylvester equations. That's the whole assignment, periodt.
β¨ SYNOPSIS β¨
π«Ά Functions π«Ά
okay so there are four subroutines on this page and I need you to meet all of them, they're all iconic in their own way:
sla_gesylvβ Frontend for the solution of Standard Sylvester Equations.
subroutine sla_gesylv (facta, factb, transa, transb, sgn, m, n, a, lda,
b, ldb, qa, ldqa, qb, ldqb, x, ldx, scale, work, ldwork, info)
sla_gesylv2β Frontend for the solution of Standard Sylvester Equations.
subroutine sla_gesylv2 (facta, factb, transa, transb, sgn, m, n, a, lda,
b, ldb, qa, ldqa, qb, ldqb, x, ldx, scale, work, ldwork, info)
sla_gesylv2_refineβ Iterative Refinement for the standard Sylvester Equations.
subroutine sla_gesylv2_refine (transa, transb, guess, sgn, m, n, a, lda,
b, ldb, x, ldx, y, ldy, as, ldas, bs, ldbs, q, ldq, u, ldu, maxit,
tau, convlog, work, ldwork, info)
sla_gesylv_refineβ Iterative Refinement for the standard Sylvester Equations.
subroutine sla_gesylv_refine (transa, transb, guess, sgn, m, n, a, lda,
b, ldb, x, ldx, y, ldy, as, ldas, bs, ldbs, q, ldq, u, ldu, maxit,
tau, convlog, work, ldwork, info)
π¦ Detailed Description π¦
Single Precision routines for standard Sylvester equations. That's the whole thing. π
This subsection contains the solvers for standard Sylvester equations with general coefficient matrices in single precision arithmetic. The Schur decompositions are computed in single precision with the help of LAPACK. Yes bestie, we're outsourcing the hard part to LAPACK and honestly? slay. π₯
π Function Documentation π
π sla_gesylv β Frontend for the solution of Standard Sylvester Equations π
Here's the full typed signature, character for character, no cap:
subroutine sla_gesylv (character, dimension(1) facta, character,
dimension(1) factb, character, dimension(1) transa, character,
dimension(1) transb, real sgn, integer m, integer n, real,
dimension(lda,*) a, integer lda, real, dimension(ldb, *) b, integer ldb,
real, dimension(ldqa, *) qa, integer ldqa, real, dimension(ldqb, *) qb,
integer ldqb, real, dimension(ldx, *) x, integer ldx, real scale, real,
dimension(*) work, integer ldwork, integer info)
π Purpose π
SLA_GESYLV solves a Sylvester equation of one of these two forms:
op1(A) * X + X * op2(B) = SCALE * Y (1)
or
op1(A) * X - X * op2(B) = SCALE * Y (2)
where A is a M-by-M matrix and B is a N-by-N matrix. The right hand side Y and the solution X are M-by-N matrices. The matrices A and B can be either a general unreduced matrix, or an upper Hessenberg form, or a (quasi-) upper triangular factor. In the later case QA and QB provide the Schur-vectors of the matrices A and B. π
π§ Parameters π§
FACTA
FACTA is CHARACTER. Specifies how the matrix A is given.
== 'N': The matrixAis given as a general matrix and its Schur decompositionA = QA*S*QA**Twill be computed.== 'F': The matrixAis given as its Schur decomposition in terms ofSandQA, formA = QA*S*QA**T== 'H': The matrixAis given as an upper Hessenberg form and its Schur decompositionA = QA*S*QA**Twill be computed
FACTB
FACTB is CHARACTER. Specifies how the matrix B is given.
== 'N': The matrixBis given as a general matrix and its Schur decompositionB = QB*R*QB**Twill be computed.== 'F': The matrixBis given as its Schur decomposition in terms ofRandQB, formB = QB*R*QB**T== 'H': The matrixBis given as an upper Hessenberg form and its Schur decompositionB = QB*R*QB**Twill be computed
TRANSA
TRANSA is CHARACTER. Specifies the form of the system of equations with respect to A:
== 'N':op1(A) = A== 'T':op1(A) = A**T
TRANSB
TRANSB is CHARACTER. Specifies the form of the system of equations with respect to B:
== 'N':op2(B) = B,== 'T':op2(B) = B**T
SGN
SGN is REAL, allowed values: +/-1. Specifies the sign between the two parts of the Sylvester equation.
= 1: Solve Equation (1)== -1: Solve Equation (2)
M
M is INTEGER. The order of the matrices A and C. M >= 0.
N
N is INTEGER. The order of the matrices B and D. N >= 0.
A
A is REAL array, dimension (LDA,M).
- If
FACTA ==, the matrixAis a general matrix and it is overwritten with its schur decompositionS. - If
FACTA ==, the matrixAcontains its (quasi-) upper triangular matrixSbeing the Schur decomposition ofA. - If
FACTA ==, the matrixAis an upper Hessenberg matrix and it is overwritten with its schur decompositionS.
not me noticing the original doc literally leaves the value blank after each FACTA == π bestie I am NOT filling those in for you, that's on the source, we keep it exactly as it is. π
LDA
LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M).
B
B is REAL array, dimension (LDB,N).
- If
FACTB ==, the matrixBis a general matrix and it is overwritten with its schur decompositionR. - If
FACTB ==, the matrixBcontains its (quasi-) upper triangular matrixRbeing the Schur decomposition ofB. - If
FACTB ==, the matrixBis an upper Hessenberg matrix and it is overwritten with its schur decompositionR.
LDB
LDB is INTEGER. The leading dimension of the array B. LDB >= max(1,N).
QA
QA is REAL array, dimension (LDQA,M).
- If
FACTA ==, the matrixQAis an empty M-by-M matrix on input and contains the Schur vectors ofAon output. - If
FACTA ==, the matrixQAcontains the Schur vectors ofA. - If
FACTA ==, the matrixQAis an empty M-by-M matrix on input and contains the Schur vectors ofAon output.
LDQA
LDQA is INTEGER. The leading dimension of the array QA. LDQA >= max(1,M).
QB
QB is REAL array, dimension (LDQB,N).
- If
FACTB ==, the matrixQBis an empty N-by-N matrix on input and contains the Schur vectors ofBon output. - If
FACTB ==, the matrixQBcontains the Schur vectors ofB. - If
FACTB ==, the matrixQBis an empty N-by-N matrix on input and contains the Schur vectors ofBon output.
LDQB
LDQB is INTEGER. The leading dimension of the array QB. LDQB >= max(1,N).
X
X is REAL array, dimension (LDX,N).
- On input, the matrix
Xcontains the right hand sideY. - On output, the matrix
Xcontains the solution of Equation (1) or (2).
Right hand side Y and the solution X are M-by-N matrices. π
LDX
LDX is INTEGER. The leading dimension of the array X. LDX >= max(1,M).
SCALE
SCALE is REAL. SCALE is a scaling factor to prevent the overflow in the result. If INFO == 0 then SCALE is 1.0, otherwise if one of the inner systems could not be solved correctly, 0 < SCALE <= 1 holds true.
WORK
WORK is REAL array, dimension (MAX(1,LDWORK)). Workspace for the algorithm. The optmimal workspace is given either by \ref mepack_memory_frontend or a previous call to the this routine with LDWORK === -1.
LDWORK
LDWORK is INTEGER. Size of the workspace for the algorithm. This can be determined by a call \ref mepack_memory_frontend. Alternatively, if LDWORK == -1 on input, the subroutine will return the required size of the workspace in LDWORK without performing any computations.
INFO
INFO is INTEGER.
== 0: successful exit π= 1:SHGEESfailed= 2:SLA_SORT_EVfailed= 3:SLA_TRLYAP_DAGfailed< 0: ifINFO = -i, the i-th argument had an illegal value
π See also π
SLA_TRSYLV_L3SLA_TRSYLV_L3_2SSLA_TRSYLV_DAGSLA_TRSYLV_L2_UNOPTSLA_TRSYLV_L2SLA_TRSYLV_L2_REORDERSLA_TRSYLV_L2_LOCAL_COPYSLA_TRSYLV_L2_LOCAL_COPY_32SLA_TRSYLV_L2_LOCAL_COPY_64SLA_TRSYLV_L2_LOCAL_COPY_96SLA_TRSYLV_L2_LOCAL_COPY_128
π Author π
Martin Koehler, MPI Magdeburg
π Date π
October 2025
π Definition π
Definition at line 250 of file sla_gesylv.f90.
π sla_gesylv2 β Frontend for the solution of Standard Sylvester Equations π
The typed signature, exactly as it appears:
subroutine sla_gesylv2 (character, dimension(1) facta, character,
dimension(1) factb, character, dimension(1) transa, character,
dimension(1) transb, real sgn, integer m, integer n, real,
dimension(lda,*) a, integer lda, real, dimension(ldb, *) b, integer ldb,
real, dimension(ldqa, *) qa, integer ldqa, real, dimension(ldqb, *) qb,
integer ldqb, real, dimension(ldx, *) x, integer ldx, real scale, real,
dimension(*) work, integer ldwork, integer info)
π Purpose π
SLA_GESYLV2 solves a Sylvester equation of the following forms:
op1(A) * X * op2(B) + X = SCALE * Y (1)
or
op1(A) * X * op2(B) - X = SCALE * Y (2)
where A is a M-by-M matrix and B is a N-by-N matrix. The right hand side Y and the solution X are M-by-N matrices. The matrices A and B can be either a general unreduced matrix, or an upper Hessenberg form, or a (quasi-) upper triangular factor. In the later case QA and QB provide the Schur-vectors of the matrices A and B. β¨
π§ Parameters π§
FACTA
...okay bestie we are literally mid-parameter here,
FACTAβ CHARACTER, and it's the one that decides how the matrix A shows up to the party. π'N': A is given as a general matrix, and its Schur decompositionA = QA*S*QA**Twill be computed. β¨'F': A is given as its Schur decomposition in terms ofSandQA, in the formA = QA*S*QA**T. π'H': A is given as an upper Hessenberg form, and its Schur decompositionA = QA*S*QA**Twill be computed. πΈ
FACTBβ CHARACTER, same energy but for the matrix B. π¦'N': B is given as a general matrix, and its Schur decompositionB = QB*R*QB**Twill be computed. β¨'F': B is given as its Schur decomposition in terms ofRandQB, in the formB = QB*R*QB**T. π'H': B is given as an upper Hessenberg form, and its Schur decompositionB = QB*R*QB**Twill be computed. πΈ
TRANSAβ CHARACTER. It sets the form of the system of equations with respect to A, bestie:'N':op1(A) = A'T':op1(A) = A**T
TRANSBβ CHARACTER. Same deal, but the form of the system of equations with respect to B:'N':op2(B) = B,'T':op2(B) = B**T
SGNβ REAL, allowed values:+/-1. It specifies the sign between the two parts of the Sylvester equation. π= 1: Solve Equation (1)== -1: Solve Equation (2)
Mβ INTEGER. The order of the matrices A and C.M >= 0. βNβ INTEGER. The order of the matrices B and D.N >= 0. βAβ REAL array, dimension(LDA,M). Here's the tea on what it holds depending on the flag:- If
FACTA ==, the matrix A is a general matrix and it is overwritten with its schur decompositionS. π« - If
FACTA ==, the matrix A contains its (quasi-) upper triangular matrixS, being the Schur decomposition of A. - If
FACTA ==, the matrix A is an upper Hessenberg matrix and it is overwritten with its schur decompositionS. π«
- If
LDAβ INTEGER. The leading dimension of the array A.LDA >= max(1,M). π«ΆBβ REAL array, dimension(LDB,N). Same vibe, for B:- If
FACTB ==, the matrix B is a general matrix and it is overwritten with its schur decompositionR. π« - If
FACTB ==, the matrix B contains its (quasi-) upper triangular matrixR, being the Schur decomposition of B. - If
FACTB ==, the matrix B is an upper Hessenberg matrix and it is overwritten with its schur decompositionR. π«
- If
LDBβ INTEGER. The leading dimension of the array B.LDB >= max(1,N). π«ΆQAβ REAL array, dimension(LDQA,M). The Schur vectors of A, and whether they come in or go out depends onFACTA:- If
FACTA ==, the matrix QA is an empty M-by-M matrix on input and contains the Schur vectors of A on output. π¦ - If
FACTA ==, the matrix QA contains the Schur vectors of A. - If
FACTA ==, the matrix QA is an empty M-by-M matrix on input and contains the Schur vectors of A on output. π¦
- If
LDQAβ INTEGER. The leading dimension of the array QA.LDQA >= max(1,M). π«ΆQBβ REAL array, dimension(LDQB,N). The Schur vectors of B, same rules as above:- If
FACTB ==, the matrix QB is an empty N-by-N matrix on input and contains the Schur vectors of B on output. π¦ - If
FACTB ==, the matrix QB contains the Schur vectors of B. - If
FACTB ==, the matrix QB is an empty N-by-N matrix on input and contains the Schur vectors of B on output. π¦
- If
LDQBβ INTEGER. The leading dimension of the array QB.LDQB >= max(1,N). π«ΆXβ REAL array, dimension(LDX,N). On input, the matrix X contains the right hand sideY. On output, the matrix X contains the solution of Equation (1) or (2). π₯ Right hand sideYand the solutionXare both M-by-N matrices, periodt.LDXβ INTEGER. The leading dimension of the array X.LDX >= max(1,M). π«ΆSCALEβ REAL. It's the scaling factor that stops the result from overflowing, because we do not do overflow in this house. π IfINFO == 0then SCALE is1.0, otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβ REAL array, dimension(MAX(1,LDWORK)). Workspace for the algorithm. π The optimal workspace is given either by\ref mepack_memory_frontendor by a previous call to this routine withLDWORK === -1. πLDWORKβ INTEGER. Size of the workspace for the algorithm. This can be determined by a call to\ref mepack_memory_frontend. Alternatively, ifLDWORK == -1on input, the subroutine will return the required size of the workspace in LDWORK without performing any computations. π€― no cap, it just tells you the size and dips.INFOβ INTEGER. The vibe check at the end: π== 0: successful exit π= 1:SHGEESfailed π= 2:SLA_SORT_EVfailed π= 3:SLA_TRLYAP_DAGfailed π< 0: ifINFO = -i, the i-th argument had an illegal value π
π See also β¨
SLA_TRSYLV2_L3SLA_TRSYLV2_L3_2SSLA_TRSYLV2_DAGSLA_TRSYLV2_L2_UNOPTSLA_TRSYLV2_L2SLA_TRSYLV2_L2_REORDERSLA_TRSYLV2_L2_LOCAL_COPYSLA_TRSYLV2_L2_LOCAL_COPY_32SLA_TRSYLV2_L2_LOCAL_COPY_64SLA_TRSYLV2_L2_LOCAL_COPY_96SLA_TRSYLV2_L2_LOCAL_COPY_128
π Author
Martin Koehler, MPI Magdeburg
π Date
October 2025
π Definition
At line 250 of file sla_gesylv2.f90.
π subroutine sla_gesylv2_refine π
subroutine sla_gesylv2_refine (character, dimension(1) transa, character,
dimension(1) transb, character, dimension(1) guess, real sgn, integer m,
integer n, real, dimension(lda, *) a, integer lda, real, dimension(ldb,
*) b, integer ldb, real, dimension ( ldx , * ) x, integer ldx, real,
dimension(ldy, *) y, integer ldy, real, dimension(ldas, *) as, integer
ldas, real, dimension(ldbs,*) bs, integer ldbs, real, dimension(ldq, *)
q, integer ldq, real, dimension(ldu, *) u, integer ldu, integer maxit,
real tau, real, dimension(*) convlog, real, dimension(*) work, integer
ldwork, integer info)
Iterative Refinement for the standard Sylvester Equations. π¦β¨
π― Purpose
SLA_GESYLV2_REFINE solves a Sylvester equation of the following forms, bestie:
op1(A) * X * op2(B) + X = Y (1)
or
op1(A) * X * op2(B) - X = Y (2)
where A is a M-by-M matrix and B is a N-by-N matrix, using iterative refinement. π The right hand side Y and the solution X are M-by-N matrices.
The matrix A and B need to be given in the original form as well as in their Schur decomposition, since both are required in the iterative refinement procedure. π like, both versions. don't skimp.
πΈ Parameters πΈ
TRANSAβ CHARACTER. Specifies the form of the system of equations with respect to A:'N':op1(A) = A'T':op1(A) = A**T
TRANSBβ CHARACTER. Specifies the form of the system of equations with respect to B:'N':op2(B) = B,'T':op2(B) = B**T
GUESSβ CHARACTER. Tells us whether X already contains an initial guess or not, iykyk:= 'I': X contains an initial guess= 'N': No initial guess, X is set to zero at the begin of the iteration. π«₯
SGNβ REAL, allowed values:+/-1. Specifies the sign between both terms. βοΈMβ INTEGER. The order of the matrix A.M >= 0. βNβ INTEGER. The order of the matrix B.N >= 0. βAβ REAL array, dimension(LDA,M). The array A contains the original matrix A defining the equation. πLDAβ INTEGER. The leading dimension of the array A.LDA >= max(1,M). π«ΆBβ REAL array, dimension(LDB,N). The array B contains the original matrix B defining the equation. πLDBβ INTEGER. The leading dimension of the array B.LDB >= max(1,N). π«ΆXβ REAL array, dimension(LDX,N). On input, the array X contains the initial guess, ifGUESS = 'I'. On output, the array X contains the solution X. πLDXβ INTEGER. The leading dimension of the array X.LDX >= max(1,M). π«ΆYβ REAL array, dimension(LDY,N). On input, the array Y contains the right hand side Y. The array stays unchanged during the iteration. π§ (it does not get touched, periodt.)LDYβ INTEGER. The leading dimension of the array Y.LDY >= max(1,M). π«ΆASβ REAL array, dimension(LDAS,M). The array AS contains the Schur decomposition of the A. πLDASβ INTEGER. The leading dimension of the array AS.LDAS >= max(1,M). π«ΆBSβ REAL array, dimension(LDBS,N). The array BS contains the Schur decomposition of B. πLDBS
okay so the remaining arguments, and yes we are listing every single one of them, no skipping, that's the rule π
LDBSβ anINTEGER, the leading dimension of the arrayBS. Constraint:LDBS >= max(1,N).Qβ aREALarray, dimension(LDQ,M). It holds the Schur vectors ofA, exactly asSGEEShanded them over. β¨LDQβ anINTEGER, the leading dimension of the arrayQ. Constraint:LDQ >= max(1,M).Uβ aREALarray, dimension(LDU,N). It holds the Schur vectors ofB, as returned bySGEES. π¦LDUβ anINTEGER, the leading dimension of the arrayU. Constraint:LDU >= max(1,N).MAXITβ anINTEGER, and it's a glow-up situation because it means two different things at two different times:- On input,
MAXITis the maximum number of iterations that get performed, and it has to sit in the range2 <= MAXIT <= 100. - On exit,
MAXITholds the number of iteration steps the algorithm actually took. π
- On input,
TAUβ aREAL, also doing the double-duty thing:- On input,
TAUis the extra security factor for the stopping criterion; typical values are0.1. - On exit,
TAUholds the last relative residual from the moment the stopping criterion became valid. π
- On input,
CONVLOGβ aREALarray, dimension(MAXIT). This is the receipts, bestie: the convergence history of the iterative refinement.CONVLOG(I)holds the maximum relative residual before it gets solved for the I-th time.WORKβ aREALarray, dimension(MAX(1,LDWORK)). Workspace for the algorithm. The optimal workspace comes back inLDWORKifLDWORK == -1on input β and in that case, no computations happen at all. πLDWORKβ anINTEGER. IfLDWORK == -1, the subroutine returns the required size of the workspace inLDWORKon exit. No computations are performed and none of the arrays get referenced. So convenient, honestly.INFOβ anINTEGER, the final vibe check:== 0: Success β¨> 0: the iteration failed in stepINFOπ< 0: ifINFO = -i, the i-th argument had an illegal value= -50: some of the internal settings likeNB, ... are incorrect π
πΈ See also πΈ
SLA_TRSYLV2_DAGDLA_TRSYLV2_LEVEL3SLA_TRSYLV2_L3_2SSLA_TRSYLV2_L2_UNOPTSLA_TRSYLV2_L2SLA_TRSYLV2_L2_REORDERSLA_TRSYLV2_L2_LOCAL_COPY_32SLA_TRSYLV2_L2_LOCAL_COPY_64SLA_TRSYLV2_L2_LOCAL_COPY_96SLA_TRSYLV2_L2_LOCAL_COPY_128SLA_TRSYLV2_L2_LOCAL_COPY
π«Ά Author π«Ά
Martin Koehler, MPI Magdeburg
π Date π
October 2025
And for the record, this one is defined at line 271 of file sla_gesylv2_refine.f90. π
π¦ sla_gesylv_refine β the second one, and she's the star of the show π¦
subroutine sla_gesylv_refine (character, dimension(1) transa, character,
dimension(1) transb, character, dimension(1) guess, real sgn, integer m,
integer n, real, dimension(lda, *) a, integer lda, real, dimension(ldb,
*) b, integer ldb, real, dimension ( ldx , * ) x, integer ldx, real,
dimension(ldy, *) y, integer ldy, real, dimension(ldas, *) as, integer
ldas, real, dimension(ldbs,*) bs, integer ldbs, real, dimension(ldq, *)
q, integer ldq, real, dimension(ldu, *) u, integer ldu, integer maxit,
real tau, real, dimension(*) convlog, real, dimension(*) work, integer
ldwork, integer info)
Iterative Refinement for the standard Sylvester Equations. That's the whole point of her. π
β¨ Purpose β¨
okay so SLA_GESYLV_REFINE solves a Sylvester equation, and there are two forms, bestie:
op1(A) * X + X * op2(B) = Y (1)
or
op1(A) * X - X * op2(B) = Y (2)
where A is an M-by-M matrix and B is an N-by-N matrix, and it does it all with iterative refinement. The right hand side Y and the solution X are both M-by-N matrices. π
And here's the part you can't skip: A and B have to be handed over in their original form and in their Schur decomposition, because the iterative refinement procedure literally needs both. No shortcuts, she needs the whole wardrobe. π
π Parameters π
TRANSAβ aCHARACTERthat says which form of the system of equations we're doing with respect toA:'N':op1(A) = A'T':op1(A) = A**T
TRANSBβ aCHARACTER, same energy but forB:'N':op2(B) = B,'T':op2(B) = B**T
GUESSβ aCHARACTERtelling us whetherXalready has an initial guess in it or not:'I':Xcontains an initial guess'N': no initial guess βXgets set to zero at the beginning of the iteration
SGNβ aREAL, allowed values are+/-1, and it specifies the sign between both terms. That's it, that's the whole job. β¨Mβ anINTEGER, the order of the matrixA. Constraint:M >= 0.Nβ anINTEGER, the order of the matrixB. Constraint:N >= 0.Aβ aREALarray, dimension(LDA,M). It holds the original matrixAthat defines the equation. π¦LDAβ anINTEGER, the leading dimension of the arrayA. Constraint:LDA >= max(1,M).Bβ aREALarray, dimension(LDB,N). It holds the original matrixBthat defines the equation.LDBβ anINTEGER, the leading dimension of the arrayB. Constraint:LDB >= max(1,N).Xβ aREALarray, dimension(LDX,N), and she changes:- On input,
Xholds the initial guess, but only ifGUESS = 'I'. - On output,
Xholds the solutionX. Slay. π
- On input,
LDXβ anINTEGER, the leading dimension of the arrayX. Constraint:LDX >= max(1,M).Yβ aREALarray, dimension(LDY,N). On input it holds the right hand sideY, and it stays unchanged during the whole iteration. Loyal queen. π«ΆLDYβ anINTEGER, the leading dimension of the arrayY. Constraint:LDY >= max(1,M).ASβ aREALarray, dimension(LDAS,M). It holds the Schur decomposition ofA.LDASβ anINTEGER, the leading dimension of the arrayAS. Constraint:LDAS >= max(1,M).BSβ aREALarray, dimension(LDBS,N). It holds the Schur decomposition ofB.LDBSβ anINTEGER, the leading dimension of the arrayBS. Constraint:LDBS >= max(1,N).Qβ aREALarray, dimension(LDQ,M), holding the Schur vectors ofAas returned bySGEES. βLDQβ anINTEGER, the leading dimension of the arrayQ. Constraint:LDQ >= max(1,M).Uβ aREALarray, dimension(LDU,N), holding the Schur vectors ofBas returned bySGEES.LDUβ anINTEGER, the leading dimension of the arrayU. Constraint:LDU >= max(1,N).MAXITβ anINTEGER, dual purpose as always:- On input,
MAXITis the maximum number of iterations that are performed,2 <= MAXIT <= 100 - On exit,
MAXITis the number of iteration steps taken by the algorithm
- On input,
TAUβ aREAL, also dual purpose:- On input,
TAUis the additional security factor for the stopping criterion; typical values are0.1 - On exit,
TAUholds the last relative residual when the stopping criterion got valid
- On input,
CONVLOGβ aREALarray, dimension(MAXIT), the convergence history of the iterative refinement.CONVLOG(I)holds the maximum relative residual before it is solved for the I-th time. πWORKβ aREALarray, dimension(MAX(1,LDWORK)). Workspace for the algorithm. The optimal workspace is returned inLDWORKifLDWORK == -1on input, and in that case no computations are performed. πLDWORKβ anINTEGER. IfLDWORK == -1, the subroutine returns the required size of the workspace inLDWORKon exit. No computations are performed and none of the arrays are referenced.INFOβ anINTEGER, the closing vibe check:== 0: Success β¨> 0: the iteration failed in stepINFOπ< 0: ifINFO = -i, the i-th argument had an illegal value= -50: some of the internal settings likeNB, ... are incorrect π
πΈ See also πΈ
SLA_TRSYLV_DAGDLA_TRSYLV_LEVEL3SLA_TRSYLV_L3_2SSLA_TRSYLV_L2_UNOPTSLA_TRSYLV_L2SLA_TRSYLV_L2_REORDERSLA_TRSYLV_L2_LOCAL_COPY_32SLA_TRSYLV_L2_LOCAL_COPY_64SLA_TRSYLV_L2_LOCAL_COPY_96SLA_TRSYLV_L2_LOCAL_COPY_128SLA_TRSYLV_L2_LOCAL_COPY
π«Ά Author π«Ά
Martin Koehler, MPI Magdeburg
π Date π
October 2025
Defined at line 272 of file sla_gesylv_refine.f90. π
and that's a wrap on the whole page, bestie π This was generated automatically by Doxygen for MEPACK, straight out of the source code. It's Version 1.1.2, dated Thu Oct 9 2025 00:00:00, and the whole thing lives at page sglgesylv(3). Go refine something iteratively, queen πβ¨
π¦ where this page comes from
- fedora 43: mepack-devel 1.1.2-1.fc43 Β· GPL-3.0-or-later and LGPL-2.1-or-later and BSD-3-Clause
- fedora 43: mepack-devel 1.1.2-1.fc43 Β· GPL-3.0-or-later and LGPL-2.1-or-later and BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms