/home/abui.../cggsvp3.f(3)
π¦ /home/abui.../cggsvp3.f(3) β Library Functions Manual π¦
okay so bestie, welcome to the Library Functions Manual page for /home/abui.../cggsvp3.f(3). We're in LAPACK 3.12.0 land, file cggsvp3.f, and this subroutine is lowkey main character energy. Buckle up. π
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cggsvp3.f
π¦ SYNOPSIS π¦
π§ Functions/Subroutines π§
subroutine CGGSVP3 (jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola,
tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, rwork, tau, work, lwork,
info)
CGGSVP3
π Function/Subroutine Documentation π
π subroutine CGGSVP3 π
subroutine CGGSVP3 (character jobu, character jobv, character jobq, integer
m, integer p, integer n, complex, dimension( lda, * ) a, integer lda,
complex, dimension( ldb, * ) b, integer ldb, real tola, real tolb,
integer k, integer l, complex, dimension( ldu, * ) u, integer ldu,
complex, dimension( ldv, * ) v, integer ldv, complex, dimension( ldq, *
) q, integer ldq, integer, dimension( * ) iwork, real, dimension( * )
rwork, complex, dimension( * ) tau, complex, dimension( * ) work,
integer lwork, integer info)
CGGSVP3
π Purpose π
Okay so here's the whole point, bestie: CGGSVP3 computes unitary matrices U, V, and Q such that:
N-K-L K L
U**H*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**H*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**H,B**H)**H.
This decomposition is the preprocessing step for computing the Generalized Singular Value Decomposition (GSVD), see subroutine CGGSVD3. π«Ά
π Parameters π
JOBUβJOBU is CHARACTER*1;= 'U': Unitary matrix U is computed;= 'N': U is not computed.JOBVβJOBV is CHARACTER*1;= 'V': Unitary matrix V is computed;= 'N': V is not computed.JOBQβJOBQ is CHARACTER*1;= 'Q': Unitary matrix Q is computed;= 'N': Q is not computed.MβM is INTEGER; the number of rows of the matrixA.M >= 0.PβP is INTEGER; the number of rows of the matrixB.P >= 0.NβN is INTEGER; the number of columns of the matricesAandB.N >= 0.AβA is COMPLEX array, dimension (LDA,N). On entry, theM-by-NmatrixA. On exit,Acontains the triangular (or trapezoidal) matrix described in the Purpose section.LDAβLDA is INTEGER; the leading dimension of the arrayA.LDA >= max(1,M).BβB is COMPLEX array, dimension (LDB,N). On entry, theP-by-NmatrixB. On exit,Bcontains the triangular matrix described in the Purpose section.LDBβLDB is INTEGER; the leading dimension of the arrayB.LDB >= max(1,P).TOLAβTOLA is REAL.TOLBβTOLB is 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βK is INTEGER.LβL is INTEGER. On exit,KandLspecify the dimension of the subblocks described in Purpose section.K + L = effective numerical rank of (A**H,B**H)**H.UβU is COMPLEX array, dimension (LDU,M). IfJOBU = 'U',Ucontains the unitary matrixU. IfJOBU = 'N',Uis not referenced.LDUβLDU is INTEGER; the leading dimension of the arrayU.LDU >= max(1,M)ifJOBU = 'U';LDU >= 1otherwise.VβV is COMPLEX array, dimension (LDV,P). IfJOBV = 'V',Vcontains the unitary matrixV. IfJOBV = 'N',Vis not referenced.LDVβLDV is INTEGER; the leading dimension of the arrayV.LDV >= max(1,P)ifJOBV = 'V';LDV >= 1otherwise.QβQ is COMPLEX array, dimension (LDQ,N). IfJOBQ = 'Q',Qcontains the unitary matrixQ. IfJOBQ = 'N',Qis not referenced.LDQβLDQ is INTEGER; the leading dimension of the arrayQ.LDQ >= max(1,N)ifJOBQ = 'Q';LDQ >= 1otherwise.IWORKβIWORK is INTEGER array, dimension (N).RWORKβRWORK is REAL array, dimension (2*N).TAUβTAU is COMPLEX array, dimension (N).WORKβWORK is COMPLEX array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORK is INTEGER; the dimension of the arrayWORK. 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βINFO is INTEGER;= 0: successful exit;< 0: if INFO = -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 CGEQP3 for 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.
π¨CGGSVP3replaces the deprecated subroutineCGGSVP. Not me being dramatic, it literally says deprecated.
Definition at line 275 of file cggsvp3.f.
π§ Author π§
Generated automatically by Doxygen for LAPACK from the source code.
and that's the page, bestie! π«Ά Footer vibe check: LAPACK Version 3.12.0 β /home/abui.../cggsvp3.f(3). Slay. π
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms