ctglyap(3)
π ctglyap β the C-Interface glow-up π
Welcome to the manual page for ctglyap(3) β brought to you by the fine folks over at MEPACK. Grab a boba bestie, we're about to make triangular-matrix equations make sense. β¨
πΈ NAME πΈ
ctglyap β C-Interface
- C-Interface for generalized Lyapunov and Stein equations with triangular coefficient matrices.
π SYNOPSIS π
Functions π
void mepack_double_tglyap_dag (const char *TRANS, int M, double *A, int
LDA, double *B, int LDB, double *X, int LDX, double *SCALE, double
*WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation with DAG scheduling.
void mepack_single_tglyap_dag (const char *TRANS, int M, float *A, int
LDA, float *B, int LDB, float *X, int LDX, float *SCALE, float
*WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation with DAG scheduling.
void mepack_double_tgstein_dag (const char *TRANS, int M, double *A, int
LDA, double *B, int LDB, double *X, int LDX, double *SCALE, double
*WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation with DAG scheduling.
void mepack_single_tgstein_dag (const char *TRANS, int M, float *A, int
LDA, float *B, int LDB, float *X, int LDX, float *SCALE, float
*WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation with DAG scheduling.
void mepack_double_tglyap_level2 (const char *TRANS, int M, double *A,
int LDA, double *B, int LDB, double *X, int LDX, double *SCALE,
double *WORK, int *INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation.
void mepack_double_tglyap_level2_unopt (const char *TRANS, int M, double
*A, int LDA, double *B, int LDB, double *X, int LDX, double *SCALE,
double *WORK, int *INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation (Unoptimized)
void mepack_single_tglyap_level2 (const char *TRANS, int M, float *A,
int LDA, float *B, int LDB, float *X, int LDX, float *SCALE, float
*WORK, int *INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation.
void mepack_single_tglyap_level2_unopt (const char *TRANS, int M, float
*A, int LDA, float *B, int LDB, float *X, int LDX, float *SCALE,
float *WORK, int *INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation (Unoptimized)
void mepack_double_tgstein_level2 (const char *TRANS, int M, double *A,
int LDA, double *B, int LDB, double *X, int LDX, double *SCALE,
double *WORK, int *INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Stein equation.
void mepack_single_tgstein_level2 (const char *TRANS, int M, float *A,
int LDA, float *B, int LDB, float *X, int LDX, float *SCALE, float
*WORK, int *INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Stein equation.
void mepack_double_tglyap_level3 (const char *TRANS, int M, double *A,
int LDA, double *B, int LDB, double *X, int LDX, double *SCALE,
double *WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation.
void mepack_double_tglyap_level3_2stage (const char *TRANS, int M,
double *A, int LDA, double *B, int LDB, double *X, int LDX, double
*SCALE, double *WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Lyapunov equation.
void mepack_single_tglyap_level3 (const char *TRANS, int M, float *A,
int LDA, float *B, int LDB, float *X, int LDX, float *SCALE, float
*WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation.
void mepack_single_tglyap_level3_2stage (const char *TRANS, int M, float
*A, int LDA, float *B, int LDB, float *X, int LDX, float *SCALE,
float *WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Lyapunov equation.
void mepack_double_tgstein_level3 (const char *TRANS, int M, double *A,
int LDA, double *B, int LDB, double *X, int LDX, double *SCALE,
double *WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation.
void mepack_double_tgstein_level3_2stage (const char *TRANS, int M,
double *A, int LDA, double *B, int LDB, double *X, int LDX, double
*SCALE, double *WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Stein equation.
void mepack_single_tgstein_level3 (const char *TRANS, int M, float *A,
int LDA, float *B, int LDB, float *X, int LDX, float *SCALE, float
*WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation.
void mepack_single_tgstein_level3_2stage (const char *TRANS, int M,
float *A, int LDA, float *B, int LDB, float *X, int LDX, float
*SCALE, float *WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Stein equation.
void mepack_double_tglyap_recursive (const char *TRANS, int M, double
*A, int LDA, double *B, int LDB, double *X, int LDX, double *SCALE,
double *WORK, int *INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation.
void mepack_single_tglyap_recursive (const char *TRANS, int M, float *A,
int LDA, float *B, int LDB, float *X, int LDX, float *SCALE, float
*WORK, int *INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation.
void mepack_double_tgstein_recursive (const char *TRANS, int M, double
*A, int LDA, double *B, int LDB, double *X, int LDX, double *SCALE,
double *WORK, int *INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Stein equation.
void mepack_single_tgstein_recursive (const char *TRANS, int M, float
*A, int LDA, float *B, int LDB, float *X, int LDX, float *SCALE,
float *WORK, int *INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Stein equation.
β¨ Detailed Description β¨
C-Interface for generalized Lyapunov and Stein equations with triangular coefficient matrices.
Okay so here's the tea, bestie π΅ β the Fortran routines that solve generalized Lyapunov and Stein equations with triangular coefficients are wrapped up in C so you get easier access to them. That's the whole point, and it's iconic.
All the wrapper routines are direct wrappers to the corresponding Fortran subroutines, without sanity checks. The Fortran routines are the ones doing those checks, so don't come for the wrappers, okay? π
Watch out: since these routines useintvalues to pass sizes, thework_spacequery will fail for large scale problems. For this reason you should use the functionmepack_memoryto query the requiredwork_spacefrom a C code. This function is aware of 64 bit integers if MEPACK is compiled with it. π«Ά
π Function Documentation π
void mepack_double_tglyap_dag (const char *TRANS, int M, double *A, int LDA, double *B, int LDB, double *X, int LDX, double *SCALE, double *WORK, int *INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation with DAG scheduling. Slay. π₯
Purpose π«
mepack_double_tglyap_dag solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices.
Typically the matrix pencil (A,B) is created by DGGES from LAPACK. Ngl that's the vibe. π¦
Remarks πΈ
- This function is a wrapper around
dla_tglyap_dag.
See also π
dla_tglyap_dag
Parameters π
TRANS
TRANS is a string. Specifies the form of the system of equations with respect to A and B:
== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
M
M is INTEGER. The order of the matrices A and B. M >= 0.
A
A is DOUBLE PRECISION array, dimension (LDA,M). The matrix A must be (quasi-) upper triangular.
LDA
LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M).
B
B is DOUBLE PRECISION array, dimension (LDB,M). The matrix B must be upper triangular.
LDB
LDB is INTEGER. The leading dimension of the array B. LDB >= max(1,M).
X
X is DOUBLE PRECISION array, dimension (LDX,N). On input, the matrix X contains the right hand side Y. On output, the matrix X contains the solution of Equation (1) or (2) as selected by TRANSA, TRANSB, and SGN. 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 DOUBLE PRECISION. SCALE is a scaling factor to prevent the overflow in the result. If INFO == 0 then SCALE is 1.0D0 otherwise if one of the inner systems could not be solved correctly, 0 < SCALE <= 1 holds true.
WORK
WORK is DOUBLE PRECISION array, dimension LDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine with INFO == -1 on input. The required workspace is then returned in INFO.
INFO
INFO is INTEGER.
On input:
== -1: Perform a workspace query<> -1: normal operation
On exit, workspace query:
< 0: ifINFO == -i, thei-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, thei-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
Author π
Martin Koehler, MPI Magdeburg
Date π
October 2025
Definition π
Definition at line 146 of file tglyap.c.
void mepack_double_tglyap_level2 (const char *TRANS, int M, double *A, int LDA, double *B, int LDB, double *X, int LDX, double *SCALE, double *WORK, int *INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation.
Purpose π«
mepack_double_tglyap_level2 solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
β¦and that's where part 1 dips, bestie β part 2 is pulling up next and the tea is only getting hotter π«β¨
A^T * X * B + A^T * X * B = SCALE * Y (1)
okay so where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular one, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π
β¨ Remarks β¨
This function is a wrapper around dla_tglyap_l2. π«Ά
β¨ See also β¨
dla_tglyap_l2
β¨ Parameters β¨
TRANSβTRANSis a string. It specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMisINTEGER. The order of the matricesAandB.M >= 0. πAβAisDOUBLE PRECISIONarray, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular. πLDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBisDOUBLE PRECISIONarray, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBisINTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXisDOUBLE PRECISIONarray, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXareM-by-Nmatrices. β¨LDXβLDXisINTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEisDOUBLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. πWORKβWORKisDOUBLE PRECISIONarray, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOisINTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, thei-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, thei-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
β¨ Author β¨
Martin Koehler, MPI Magdeburg
β¨ Date β¨
October 2025
β¨ Definition β¨
Definition at line 146 of file tglyap.c.
πΈ mepack_double_tglyap_level2_unopt πΈ
void mepack_double_tglyap_level2_unopt (const char * TRANS, int M, double *
A, int LDA, double * B, int LDB, double * X, int LDX, double * SCALE,
double * WORK, int * INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation (Unoptimized) π₯
β¨ Purpose β¨
mepack_double_tglyap_level2_unopt solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular one, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π
β¨ Remarks β¨
This function is a wrapper around dla_tglyap_l2_unopt. π«Ά
β¨ See also β¨
dla_tglyap_l2_unopt
β¨ Parameters β¨
TRANSβTRANSis a string. It specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMisINTEGER. The order of the matricesAandB.M >= 0. πAβAisDOUBLE PRECISIONarray, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular. πLDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBisDOUBLE PRECISIONarray, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBisINTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXisDOUBLE PRECISIONarray, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXareM-by-Nmatrices. β¨LDXβLDXisINTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEisDOUBLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. πWORKβWORKisDOUBLE PRECISIONarray, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOisINTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, thei-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, thei-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
β¨ Author β¨
Martin Koehler, MPI Magdeburg
β¨ Date β¨
October 2025
β¨ Definition β¨
Definition at line 281 of file tglyap.c.
π mepack_double_tglyap_level3 π
void mepack_double_tglyap_level3 (const char * TRANS, int M, double * A, int
LDA, double * B, int LDB, double * X, int LDX, double * SCALE, double *
WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation. π₯
β¨ Purpose β¨
mepack_double_tglyap_level3 solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular one, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π
β¨ Remarks β¨
This function is a wrapper around dla_tglyap_l3. π«Ά
β¨ See also β¨
dla_tglyap_l3
β¨ Parameters β¨
TRANSβTRANSis a string. It specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMisINTEGER. The order of the matricesAandB.M >= 0. πAβAisDOUBLE PRECISIONarray, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular. πLDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBisDOUBLE PRECISIONarray, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBisINTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXisDOUBLE PRECISIONarray, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXareM-by-Nmatrices. β¨LDXβLDXisINTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEisDOUBLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. πWORKβWORKisDOUBLE PRECISIONarray, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOisINTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, thei-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, thei-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
β¨ Author β¨
Martin Koehler, MPI Magdeburg
β¨ Date β¨
October 2025
β¨ Definition β¨
Definition at line 146 of file tglyap.c.
π¦ mepack_double_tglyap_level3_2stage π¦
void mepack_double_tglyap_level3_2stage (const char * TRANS, int M, double *
A, int LDA, double * B, int LDB, double * X, int LDX, double * SCALE,
double * WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Lyapunov equation. π₯
β¨ Purpose β¨
mepack_double_tglyap_level3_2stage solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
okay so A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular one, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π«
β¨ Remarks β¨
- This function is a wrapper around
dla_tglyap_l3_2s. π
π See also π
dla_tglyap_l3_2s
π Parameters π
TRANSβTRANSis a string. Specifies the form of the system of equations with respect to A and B:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matrices A and B.M >= 0.AβAis DOUBLE PRECISION array, dimension(LDA,M). The matrix A must be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the array A.LDA >= max(1,M).BβBis DOUBLE PRECISION array, dimension(LDB,M). The matrix B must be upper triangular.LDBβLDBis INTEGER. The leading dimension of the array B.LDB >= max(1,M).XβXis DOUBLE PRECISION array, dimension(LDX,N). On input, the matrix X contains the right hand side Y. On output, the matrix X contains the solution of Equation (1) or (2) as selected by TRANSA, TRANSB, and SGN. Right hand side Y and the solution X are M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the array X.LDX >= max(1,M).SCALEβSCALEis DOUBLE PRECISION. SCALE is a scaling factor to prevent the overflow in the result. IfINFO == 0then SCALE is1.0D0, otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis DOUBLE PRECISION array, dimension LDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned in INFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value of INFO is the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
πΈ Author πΈ
Martin Koehler, MPI Magdeburg
π Date π
October 2025
Definition at line 281 of file tglyap.c.
π void mepack_double_tglyap_recursive π
void mepack_double_tglyap_recursive (const char * TRANS, int M, double * A,
int LDA, double * B, int LDB, double * X, int LDX, double * SCALE,
double * WORK, int * INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation. π§
Purpose:
mepack_double_tglyap_recursive solves a generalized Lyapunov equation of the following forms π
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. β¨
β¨ Remarks β¨
- This function is a wrapper around
dla_tglyap_recursive. π
π See also π
dla_tglyap_recursive
π Parameters π
TRANSβTRANSis a string. Specifies the form of the system of equations with respect to A and B:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matrices A and B.M >= 0.AβAis DOUBLE PRECISION array, dimension(LDA,M). The matrix A must be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the array A.LDA >= max(1,M).BβBis DOUBLE PRECISION array, dimension(LDB,M). The matrix B must be upper triangular.LDBβLDBis INTEGER. The leading dimension of the array B.LDB >= max(1,M).XβXis DOUBLE PRECISION array, dimension(LDX,N). On input, the matrix X contains the right hand side Y. On output, the matrix X contains the solution of Equation (1) or (2) as selected by TRANSA, TRANSB, and SGN. Right hand side Y and the solution X are M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the array X.LDX >= max(1,M).SCALEβSCALEis DOUBLE PRECISION. SCALE is a scaling factor to prevent the overflow in the result. IfINFO == 0then SCALE is1.0D0, otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis DOUBLE PRECISION array, dimension LDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned in INFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value of INFO is the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
πΈ Author πΈ
Martin Koehler, MPI Magdeburg
π Date π
October 2025
Definition at line 146 of file tglyap.c.
π void mepack_double_tgstein_dag π
void mepack_double_tgstein_dag (const char * TRANS, int M, double * A, int
LDA, double * B, int LDB, double * X, int LDX, double * SCALE, double *
WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation with DAG scheduling. π¦
Purpose:
mepack_double_tgstein_dag solves a generalized Stein equation of the following forms β¨
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π«
β¨ Remarks β¨
- This function is a wrapper around
dla_tgstein_dag. π
π See also π
dla_tgstein_dag
π Parameters π
TRANSβTRANSis a string. Specifies the form of the system of equations with respect to A and B:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matrices A and B.M >= 0.AβAis DOUBLE PRECISION array, dimension(LDA,M). The matrix A must be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the array A.LDA >= max(1,M).BβBis DOUBLE PRECISION array, dimension(LDB,M). The matrix B must be upper triangular.LDBβLDBis INTEGER. The leading dimension of the array B.LDB >= max(1,M).XβXis DOUBLE PRECISION array, dimension(LDX,N). On input, the matrix X contains the right hand side Y. On output, the matrix X contains the solution of Equation (1) or (2) as selected by TRANSA, TRANSB, and SGN. Right hand side Y and the solution X are M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the array X.LDX >= max(1,M).SCALEβSCALEis DOUBLE PRECISION. SCALE is a scaling factor to prevent the overflow in the result. IfINFO == 0then SCALE is1.0D0, otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis DOUBLE PRECISION array, dimension LDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned in INFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value of INFO is the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
πΈ Author πΈ
Martin Koehler, MPI Magdeburg
π Date π
October 2025
Definition at line 146 of file tgstein.c.
π void mepack_double_tgstein_level2 π
void mepack_double_tgstein_level2 (const char * TRANS, int M, double * A,
int LDA, double * B, int LDB, double * X, int LDX, double * SCALE,
double * WORK, int * INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Stein equation. π
Purpose:
mepack_double_tgstein_level2 solves a generalized Stein equation of the following forms π
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π«
π¬ Remarks
This function is a wrapper around dla_tgstein_l2.
π See also
dla_tgstein_l2
π Parameters
TRANSβTRANSis a string. It tells you which form of the system of equations we're solving, with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB. Gotta beM >= 0.AβAis a DOUBLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular, bestie, no exceptions. πLDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis a DOUBLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular. π¦LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis a DOUBLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. The right hand sideYand the solutionXare M-by-N matrices. β¨LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis DOUBLE PRECISION. It's a scaling factor whose whole job is to stop the result from overflowing. IfINFO == 0thenSCALEis1.0D0; otherwise, if one of the inner systems couldn't be solved correctly,0 < SCALE <= 1holds true. π«ΆWORKβWORKis a DOUBLE PRECISION array, dimensionLDWORK. This is the workspace for the algorithm. You have to query the workspace before running the computation β you do that by calling the subroutine withINFO == -1on input, and then the required workspace gets handed back to you inINFO. πINFOβINFOis INTEGER. Here's the whole vibe:
On input:
== -1: Perform a workspace query<> -1: normal operation
On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular. π
βοΈ Author
Martin Koehler, MPI Magdeburg
π Date
October 2025
π Definition
At line 146 of file tgstein.c.
π mepack_double_tgstein_level3
void mepack_double_tgstein_level3 (const char * TRANS, int M, double * A,
int LDA, double * B, int LDB, double * X, int LDX, double * SCALE,
double * WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation. slay
π― Purpose
mepack_double_tgstein_level3 solves a generalized Stein equation of the following forms:
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π«
π¬ Remarks
This function is a wrapper around dla_tgstein_l3.
π See also
dla_tgstein_l3
π Parameters
TRANSβTRANSis a string. It tells you which form of the system of equations we're solving, with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB. Gotta beM >= 0.AβAis a DOUBLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular. πLDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis a DOUBLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular. π¦LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis a DOUBLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. The right hand sideYand the solutionXare M-by-N matrices. β¨LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis DOUBLE PRECISION. A scaling factor to prevent overflow in the result. IfINFO == 0thenSCALEis1.0D0; otherwise, if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. π«ΆWORKβWORKis a DOUBLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. It needs to be queried before running the computation β you do that by calling the subroutine withINFO == -1on input, and the required workspace is then returned inINFO. πINFOβINFOis INTEGER. The rundown:
On input:
== -1: Perform a workspace query<> -1: normal operation
On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular. π
βοΈ Author
Martin Koehler, MPI Magdeburg
π Date
October 2025
π Definition
At line 146 of file tgstein.c.
π mepack_double_tgstein_level3_2stage
void mepack_double_tgstein_level3_2stage (const char * TRANS, int M, double
* A, int LDA, double * B, int LDB, double * X, int LDX, double * SCALE,
double * WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Stein equation. it's giving extra structure
π― Purpose
mepack_double_tgstein_level3_2stage solves a generalized Stein equation of the following forms:
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by DGGES from LAPACK. π«
π¬ Remarks
This function is a wrapper around dla_tgstein_l3_2s.
π See also
dla_tgstein_l3_2s
π Parameters
TRANSβTRANSis a string. It tells you which form of the system of equations we're solving, with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB. Gotta beM >= 0.AβAis a DOUBLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular. πLDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis a DOUBLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular. π¦LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis a DOUBLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. The right hand sideYand the solutionXare M-by-N matrices. β¨LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis DOUBLE PRECISION. A scaling factor to prevent overflow in the result. IfINFO == 0thenSCALEis1.0D0; otherwise, if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. π«ΆWORKβWORKis a DOUBLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. It needs to be queried before running the computation β you do that by calling the subroutine withINFO == -1on input, and the required workspace is then returned inINFO. πINFOβINFOis INTEGER. The rundown:
On input:
== -1: Perform a workspace query<> -1: normal operation
On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular. π
βοΈ Author
Martin Koehler, MPI Magdeburg
π Date
October 2025
π Definition
At line 281 of file tgstein.c.
π¦ mepack_double_tgstein_recursive
void mepack_double_tgstein_recursive (const char * TRANS, int M, double * A,
int LDA, double * B, int LDB, double * X, int LDX, double * SCALE,
double * WORK, int * INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Stein equation. recursion said what now
π― Purpose
mepack_double_tgstein_recursive solves a generalized Stein equation of the following forms:
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
...where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. π«
Typically the matrix pencil (A,B) is created by DGGES from LAPACK. iykyk π§
Remarks π
This function is a wrapper around dla_tgstein_recursive.
See also π
dla_tgstein_recursive
Parameters π
TRANSβTRANSis a string. It specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis DOUBLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis DOUBLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis DOUBLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis DOUBLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0, otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis DOUBLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
Author βοΈ
Martin Koehler, MPI Magdeburg
Date π
October 2025
Definition at line 146 of file tgstein.c.
β¨ mepack_single_tglyap_dag β¨
void mepack_single_tglyap_dag (const char * TRANS, int M, float * A, int
LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation with DAG scheduling. π¦ (yes bestie, DAG scheduling, we're being fancy)
Purpose: π
mepack_single_tglyap_dag solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by SGGES from LAPACK. π
Remarks π
This function is a wrapper around sla_tglyap_dag.
See also π
sla_tglyap_dag
Parameters π
TRANSβTRANSis a string. It specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0, otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
Author βοΈ
Martin Koehler, MPI Magdeburg
Date π
October 2025
Definition at line 281 of file tglyap.c.
πΈ mepack_single_tglyap_level2 πΈ
void mepack_single_tglyap_level2 (const char * TRANS, int M, float * A, int
LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation. β¨
Purpose: π
mepack_single_tglyap_level2 solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by SGGES from LAPACK. π
Remarks π
This function is a wrapper around sla_tglyap_l2.
See also π
sla_tglyap_l2
Parameters π
TRANSβTRANSis a string. It specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0, otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
Author βοΈ
Martin Koehler, MPI Magdeburg
Date π
October 2025
Definition at line 420 of file tglyap.c.
π mepack_single_tglyap_level2_unopt π
void mepack_single_tglyap_level2_unopt (const char * TRANS, int M, float *
A, int LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float
* WORK, int * INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Lyapunov equation (Unoptimized). π no frills, no glow-up, just vibes
Purpose: π
mepack_single_tglyap_level2_unopt solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by SGGES from LAPACK. β¨
π Remarks π
This function is a wrapper around sla_tglyap_l2_unopt. It's giving "I just forward the vibe to the real one" β no cap, it delegates. π«Ά
π See also π
sla_tglyap_l2_unopt
πΈ Parameters πΈ
TRANSβTRANSis a string. It specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular. quasi, bestie, don't come for me πLDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. she's out here keeping your numbers from yeeting into infinity π₯WORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.
On input:
== -1: Perform a workspace query<> -1: normal operation
On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
π Author π
Martin Koehler, MPI Magdeburg
ποΈ Date ποΈ
October 2025
Definition at line 557 of file tglyap.c. π
mepack_single_tglyap_level3
void mepack_single_tglyap_level3 (const char * TRANS, int M, float * A, int
LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation. π
β¨ Purpose β¨
mepack_single_tglyap_level3 solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by SGGES from LAPACK. β¨
π Remarks π
This function is a wrapper around sla_tglyap_l3. bestie it's a cute lil glow-up over the real worker π«Ά
π See also π
sla_tglyap_l3
πΈ Parameters πΈ
TRANSβTRANSis a string. Specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.
On input:
== -1: Perform a workspace query<> -1: normal operation
On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
π Author π
Martin Koehler, MPI Magdeburg
ποΈ Date ποΈ
October 2025
Definition at line 416 of file tglyap.c. π
mepack_single_tglyap_level3_2stage
void mepack_single_tglyap_level3_2stage (const char * TRANS, int M, float *
A, int LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float
* WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Lyapunov equation. π
β¨ Purpose β¨
mepack_single_tglyap_level3_2stage solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. Typically the matrix pencil (A,B) is created by SGGES from LAPACK. β¨
π Remarks π
This function is a wrapper around sla_tglyap_l3_2s. two-stage era, we love a lil sub-blocking moment π
π See also π
sla_tglyap_l3_2s
πΈ Parameters πΈ
TRANSβTRANSis a string. Specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. keeping your overflow from popping off πWORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.
On input:
== -1: Perform a workspace query<> -1: normal operation
On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
π Author π
Martin Koehler, MPI Magdeburg
ποΈ Date ποΈ
October 2025
Definition at line 551 of file tglyap.c. π
mepack_single_tglyap_recursive
void mepack_single_tglyap_recursive (const char * TRANS, int M, float * A,
int LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Lyapunov equation. π
β¨ Purpose β¨
mepack_single_tglyap_recursive solves a generalized Lyapunov equation of the following forms
A * X * B^T + A * X * B^T = SCALE * Y (2)
or
A^T * X * B + A^T * X * B = SCALE * Y (1)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular,
and X and Y are symmetric M-by-M matrices.
Typically the matrix pencil (A,B) is created by SGGES from LAPACK.
okay so A is M-by-M and quasi upper triangular, B is M-by-M plain upper triangular, and X and Y are both symmetric M-by-M matrices. and like, the matrix pencil (A,B) is normally born from SGGES out of LAPACK β that's where it comes from, no cap π
β¨ Remarks β¨
this one? it's just a wrapper around sla_tglyap_recursive. that's the whole vibe. π«Ά
πΈ See also πΈ
sla_tglyap_recursive
π Parameters π
TRANSβ a string, bestie. it says which form of the system of equations we're using, like, with respect toAandB:== 'N': Equation (1) is the one being solved.== 'T': Equation (2) is the one being solved.
MβMisINTEGER. it's the order of the matricesAandB. andM >= 0, always. β¨AβAis aSINGLE PRECISIONarray, dimension(LDA,M). and it must be (quasi-) upper triangular.LDAβLDAisINTEGER. leading dimension of the arrayA. and it's gotta beLDA >= max(1,M).BβBis aSINGLE PRECISIONarray, dimension(LDB,M).Bmust be upper triangular.LDBβLDBisINTEGER. leading dimension of the arrayB, andLDB >= max(1,M).XβXis aSINGLE PRECISIONarray, dimension(LDX,N). on input,Xis holding the right hand sideY. on output,Xis holding the solution of Equation (1) or (2), whichever one got picked byTRANSA,TRANSB, andSGN. the right hand sideYand the solutionXare both M-by-N matrices, fyi. πLDXβLDXisINTEGER. leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEisSINGLE PRECISION. it's a scaling factor that exists to stop overflow in the result. ifINFO == 0thenSCALEis1.0D0; otherwise, if one of the inner systems couldn't be solved correctly, then0 < SCALE <= 1holds true. πWORKβWORKis aSINGLE PRECISIONarray, dimensionLDWORK. it's the workspace for the algorithm. and heads up: you gotta query the workspace before you run the computation. you do the query by calling the subroutine withINFO == -1on input, and then the required workspace gets handed back to you inINFO.INFOβINFOisINTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
π Author π
Martin Koehler, MPI Magdeburg
β Date β
October 2025
π¦ Definition π¦
at line 281 of file tglyap.c. periodt.
π mepack_single_tgstein_dag π
void mepack_single_tgstein_dag (const char * TRANS, int M, float * A, int
LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation with DAG scheduling. okay so this is the DAG-scheduled one, it's giving parallel main character energy.
π Purpose π
mepack_single_tgstein_dag solves a generalized Stein equation, and it comes in these two forms:
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. typically the matrix pencil (A,B) is created by SGGES from LAPACK. π
β¨ Remarks β¨
this function is a wrapper around sla_tgstein_dag.
πΈ See also πΈ
sla_tgstein_dag
π Parameters π
TRANSβ a string. Specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMisINTEGER. the order of the matricesAandB.M >= 0.AβAisSINGLE PRECISIONarray, dimension(LDA,M).Amust be (quasi-) upper triangular.LDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,M).BβBisSINGLE PRECISIONarray, dimension(LDB,M).Bmust be upper triangular.LDBβLDBisINTEGER. the leading dimension of the arrayB.LDB >= max(1,M).XβXisSINGLE PRECISIONarray, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXisINTEGER. the leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEisSINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKisSINGLE PRECISIONarray, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOisINTEGER- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
π Author π
Martin Koehler, MPI Magdeburg
β Date β
October 2025
π¦ Definition π¦
at line 281 of file tgstein.c. π
π mepack_single_tgstein_level2 π
void mepack_single_tgstein_level2 (const char * TRANS, int M, float * A, int
LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Level-2 Bartels-Stewart Algorithm for the generalized Stein equation. the level-2 one, lowkey the chill sibling.
π Purpose π
mepack_single_tgstein_level2 solves a generalized Stein equation of the following forms:
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. typically the matrix pencil (A,B) is created by SGGES from LAPACK. π
β¨ Remarks β¨
this function is a wrapper around sla_tgstein_l2.
πΈ See also πΈ
sla_tgstein_l2
π Parameters π
TRANSβ a string. Specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved.== 'T': Equation (2) is solved.
MβMisINTEGER. the order of the matricesAandB.M >= 0.AβAisSINGLE PRECISIONarray, dimension(LDA,M).Amust be (quasi-) upper triangular.LDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,M).BβBisSINGLE PRECISIONarray, dimension(LDB,M).Bmust be upper triangular.LDBβLDBisINTEGER. the leading dimension of the arrayB.LDB >= max(1,M).XβXisSINGLE PRECISIONarray, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXisINTEGER. the leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEisSINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKisSINGLE PRECISIONarray, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOisINTEGER- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular.
- On input:
π Author π
Martin Koehler, MPI Magdeburg
β Date β
October 2025
π¦ Definition π¦
at line 282 of file tgstein.c. π«Ά
π mepack_single_tgstein_level3 π
void mepack_single_tgstein_level3 (const char * TRANS, int M, float * A, int
LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm for the generalized Stein equation. level-3, the big one, block-y and efficient, we love her. β¨
π Purpose π
mepack_single_tgstein_level3 solves a generalized Stein equation of the following forms:
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. π
And bestie, where does that pencil even come from? Typically the matrix pencil (A,B) is created by SGGES from LAPACK. That's just the lore. β¨
Remarks π
This function is a wrapper around sla_tgstein_l3. It's giving delegation, and honestly? We respect it. π
See also π
sla_tgstein_l3
Parameters π§
TRANSβ a string, and it decides which form of the system of equations we're solving with respect toAandB:== 'N': Equation (1) is solved. π¦== 'T': Equation (2) is solved. π¦
MβMis INTEGER. The order of the matricesAandB.M >= 0. (Yes, zero counts. We love a degenerate case.) πΈAβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular. No exceptions, it's not optional. πLDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular. Note: just upper triangular, no "quasi" business here. π«ΆLDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices. SoXis doing double duty and honestly? Iconic behaviour. πLDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true. It's the little safety net keeping your numbers from yeeting into infinity. πWORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO. So yeah β you gotta ask first, it's not just gonna tell you for free. πINFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit π< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular. π
- On input:
Author: Martin Koehler, MPI Magdeburg
Date: October 2025
Definition at line 416 of file tgstein.c.
mepack_single_tgstein_level3_2stage π₯
void mepack_single_tgstein_level3_2stage (const char * TRANS, int M, float *
A, int LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float
* WORK, int * INFO)
Level-3 Bartels-Stewart Algorithm with sub-blocking for the generalized Stein equation. Sub-blocking!! It's giving organised, it's giving structured, we love a subdivided queen. π
Purpose:
mepack_single_tgstein_level3_2stage solves a generalized Stein equation of the following forms
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. π
Typically the matrix pencil (A,B) is created by SGGES from LAPACK. Same origin story as always. β¨
Remarks π
This function is a wrapper around sla_tgstein_l3_2s. πΈ
See also π
sla_tgstein_l3_2s
Parameters π
TRANSβ a string that specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved. π¦== 'T': Equation (2) is solved. π¦
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit π< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular. π
- On input:
Author: Martin Koehler, MPI Magdeburg
Date: October 2025
Definition at line 551 of file tgstein.c.
mepack_single_tgstein_recursive π
void mepack_single_tgstein_recursive (const char * TRANS, int M, float * A,
int LDA, float * B, int LDB, float * X, int LDX, float * SCALE, float *
WORK, int * INFO)
Recursive blocking Level-3 Bartels-Stewart Algorithm for the generalized Stein equation. It recurses. It blocks. It does both. Main character energy, fr fr. π
Purpose:
mepack_single_tgstein_recursive solves a generalized Stein equation of the following forms
A * X * A^T - B * X * B^T = SCALE * Y (1)
or
A^T * X * A - B^T * X * B = SCALE * Y (2)
where A is a M-by-M quasi upper triangular matrix, B is a M-by-M upper triangular, and X and Y are symmetric M-by-M matrices. π
Typically the matrix pencil (A,B) is created by SGGES from LAPACK. Yep, same as before, the pencil pipeline is consistent. β¨
Remarks π
This function is a wrapper around sla_tgstein_recursive. π«Ά
See also π
sla_tgstein_recursive
Parameters π§
TRANSβ a string that specifies the form of the system of equations with respect toAandB:== 'N': Equation (1) is solved. π¦== 'T': Equation (2) is solved. π¦
MβMis INTEGER. The order of the matricesAandB.M >= 0.AβAis SINGLE PRECISION array, dimension(LDA,M). The matrixAmust be (quasi-) upper triangular.LDAβLDAis INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβBis SINGLE PRECISION array, dimension(LDB,M). The matrixBmust be upper triangular.LDBβLDBis INTEGER. The leading dimension of the arrayB.LDB >= max(1,M).XβXis SINGLE PRECISION array, dimension(LDX,N). On input, the matrixXcontains the right hand sideY. On output, the matrixXcontains the solution of Equation (1) or (2) as selected byTRANSA,TRANSB, andSGN. Right hand sideYand the solutionXare M-by-N matrices.LDXβLDXis INTEGER. The leading dimension of the arrayX.LDX >= max(1,M).SCALEβSCALEis SINGLE PRECISION.SCALEis a scaling factor to prevent the overflow in the result. IfINFO == 0thenSCALEis1.0D0otherwise if one of the inner systems could not be solved correctly,0 < SCALE <= 1holds true.WORKβWORKis SINGLE PRECISION array, dimensionLDWORK. Workspace for the algorithm. The workspace needs to queried before the running the computation. The query is performed by calling the subroutine withINFO == -1on input. The required workspace is then returned inINFO.INFOβINFOis INTEGER.- On input:
== -1: Perform a workspace query<> -1: normal operation
- On exit, workspace query:
< 0: ifINFO == -i, the i-Th argument had an illegal value>= 0: The value ofINFOis the required number of elements in the workspace.
- On exit, normal operation:
== 0: successful exit π< 0: ifINFO == -i, the i-Th argument had an illegal value> 0: The equation is not solved correctly. One of the arising inner system got singular. π
- On input:
Author: Martin Koehler, MPI Magdeburg
Date: October 2025
Definition at line 281 of file tgstein.c.
Author π
Generated automatically by Doxygen for MEPACK from the source code. So technically Doxygen wrote this whole thing, but I'm the one giving it the glow-up. πβ¨
And that's a wrap on the whole page, bestie!! πΈππ This was version 1.1.2, dated Thu Oct 9 2025 00:00:00, and you just read ctglyap(3). Go forth and solve those generalized Stein equations, you absolute legend. Periodt. ππ¦π
π¦ 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