SRC/sggsvp3.f(3)
π SRC/sggsvp3.f π
bestie, welcome to the Library Functions Manual page for SRC/sggsvp3.f β aka the SGGSVP3 routine, and she is booked and busy doing GSVD prep. β¨
β¨ NAME β¨
SRC/sggsvp3.f
πΈ SYNOPSIS πΈ
π§© Functions/Subroutines
subroutine sggsvp3 (jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola,
tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, tau, work, lwork, info)
SGGSVP3
π Function/Subroutine Documentation π
subroutine sggsvp3 (character jobu, character jobv, character jobq, integer
m, integer p, integer n, real, dimension( lda, * ) a, integer lda, real,
dimension( ldb, * ) b, integer ldb, real tola, real tolb, integer k,
integer l, real, dimension( ldu, * ) u, integer ldu, real, dimension(
ldv, * ) v, integer ldv, real, dimension( ldq, * ) q, integer ldq,
integer, dimension( * ) iwork, real, dimension( * ) tau, real,
dimension( * ) work, integer lwork, integer info)
SGGSVP3
π― Purpose:
okay so the whole point: SGGSVP3 computes orthogonal matrices U, V and Q such that the block structure goes off like this:
!>
!> SGGSVP3 computes orthogonal matrices U, V and Q such that
!>
!> N-K-L K L
!> U**T*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0;
!> L ( 0 0 A23 )
!> M-K-L ( 0 0 0 )
!>
!> N-K-L K L
!> = K ( 0 A12 A13 ) if M-K-L < 0;
!> M-K ( 0 0 A23 )
!>
!> N-K-L K L
!> V**T*B*Q = L ( 0 0 B13 )
!> P-L ( 0 0 0 )
!>
!> where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular
!> upper triangular; A23 is L-by-L upper triangular if M-K-L >= 0,
!> otherwise A23 is (M-K)-by-L upper trapezoidal. K+L = the effective
!> numerical rank of the (M+P)-by-N matrix (A**T,B**T)**T.
!>
!> This decomposition is the preprocessing step for computing the
!> Generalized Singular Value Decomposition (GSVD), see subroutine
!> SGGSVD3.
!>
translation for the group chat: A12 is K-by-K and B13 is L-by-L, both nonsingular upper triangular. A23 is L-by-L upper triangular if M-K-L >= 0; otherwise A23 is (M-K)-by-L upper trapezoidal. And K+L = the effective numerical rank of the (M+P)-by-N matrix (A**T,B**T)**T. This decomposition is literally the preprocessing step for computing the Generalized Singular Value Decomposition (GSVD), so go see subroutine SGGSVD3. π
π Parameters
JOBUβCHARACTER*1;= 'U': orthogonal matrixUis computed;= 'N':Uis not computed.JOBVβCHARACTER*1;= 'V': orthogonal matrixVis computed;= 'N':Vis not computed.JOBQβCHARACTER*1;= 'Q': orthogonal matrixQis computed;= 'N':Qis not computed.MβINTEGER; the number of rows of the matrixA.M >= 0.PβINTEGER; the number of rows of the matrixB.P >= 0.NβINTEGER; the number of columns of the matricesAandB.N >= 0.AβREAL array, dimension (LDA,N); on entry, the M-by-N matrixA. On exit,Acontains the triangular (or trapezoidal) matrix described in the Purpose section.LDAβINTEGER; the leading dimension of the arrayA.LDA >= max(1,M).BβREAL array, dimension (LDB,N); on entry, the P-by-N matrixB. On exit,Bcontains the triangular matrix described in the Purpose section.LDBβINTEGER; the leading dimension of the arrayB.LDB >= max(1,P).TOLAβREAL.TOLBβREAL.TOLAandTOLBare the thresholds to determine the effective numerical rank of matrixBand a subblock ofA. Generally, they are set toTOLA = MAX(M,N)*norm(A)*MACHEPS,TOLB = MAX(P,N)*norm(B)*MACHEPS. The size ofTOLAandTOLBmay affect the size of backward errors of the decomposition.KβINTEGER.LβINTEGER. On exit,KandLspecify the dimension of the subblocks described in the Purpose section.K + L= effective numerical rank of(A**T,B**T)**T.UβREAL array, dimension (LDU,M); ifJOBU = 'U',Ucontains the orthogonal matrixU. IfJOBU = 'N',Uis not referenced.LDUβINTEGER; the leading dimension of the arrayU.LDU >= max(1,M)ifJOBU = 'U';LDU >= 1otherwise.VβREAL array, dimension (LDV,P); ifJOBV = 'V',Vcontains the orthogonal matrixV. IfJOBV = 'N',Vis not referenced.LDVβINTEGER; the leading dimension of the arrayV.LDV >= max(1,P)ifJOBV = 'V';LDV >= 1otherwise.QβREAL array, dimension (LDQ,N); ifJOBQ = 'Q',Qcontains the orthogonal matrixQ. IfJOBQ = 'N',Qis not referenced.LDQβINTEGER; the leading dimension of the arrayQ.LDQ >= max(1,N)ifJOBQ = 'Q';LDQ >= 1otherwise.IWORKβINTEGER array, dimension (N).TAUβREAL array, dimension (N).WORKβREAL array, dimension (MAX(1,LWORK)); on exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβINTEGER; the dimension of the arrayWORK.LWORK >= 1. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.INFOβINTEGER;= 0: successful exit;< 0: ifINFO = -i, the i-th argument had an illegal value.
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
- The subroutine uses LAPACK subroutine
SGEQP3for the QR factorization with column pivoting to detect the effective numerical rank of the a matrix. It may be replaced by a better rank determination strategy. SGGSVP3replaces the deprecated subroutineSGGSVP. π«Ά
π Definition at line 269 of file sggsvp3.f.
π§ Author π§
Generated automatically by Doxygen for LAPACK from the source code. π
byeee bestie! source: SRC/sggsvp3.f(3), version: LAPACK Version 3.12.0 β go off and decompose those generalized singular values, mwah ππ
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms