gsvj0(3)
π
ok bestie, this is part 1 of a chonky one β a Library Functions Manual page for gsvj0(3). Buckle up, we're doing linear algebra and we're doing it cutely. β¨
πΈ NAME πΈ
gsvj0 β gsvj0: step in gesvj
β¨ SYNOPSIS β¨
π Functions π
subroutine cgsvj0β CGSVJ0 pre-processor for the routinecgesvj.
subroutine cgsvj0 (jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin,
tol, nsweep, work, lwork, info)
subroutine dgsvj0β DGSVJ0 pre-processor for the routinedgesvj.
subroutine dgsvj0 (jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin,
tol, nsweep, work, lwork, info)
subroutine sgsvj0β SGSVJ0 pre-processor for the routinesgesvj.
subroutine sgsvj0 (jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin,
tol, nsweep, work, lwork, info)
subroutine zgsvj0β ZGSVJ0 pre-processor for the routinezgesvj.
subroutine zgsvj0 (jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin,
tol, nsweep, work, lwork, info)
π¦ Detailed Description π¦
π« Function Documentation π«
π subroutine cgsvj0
subroutine cgsvj0 (character*1 jobv, integer m, integer n, complex,
dimension( lda, * ) a, integer lda, complex, dimension( n ) d, real,
dimension( n ) sva, integer mv, complex, dimension( ldv, * ) v, integer
ldv, real eps, real sfmin, real tol, integer nsweep, complex, dimension(
lwork ) work, integer lwork, integer info)
CGSVJ0 pre-processor for the routine cgesvj.
π Purpose:
CGSVJ0 is called from CGESVJ as a pre-processor and that is its main purpose. It applies Jacobi rotations in the same way as CGESVJ does, but it does not check convergence (stopping criterion). Few tuning parameters (marked by [TP]) are available for the implementer.
π§ Parameters π§
JOBVβJOBVisCHARACTER*1. It specifies whether the output from this procedure is used to compute the matrix V:= 'V': the product of the Jacobi rotations is accumulated by postmultiplying the N-by-N array V. (See the description of V.)= 'A': the product of the Jacobi rotations is accumulated by postmultiplying the MV-by-N array V. (See the descriptions of MV and V.)= 'N': the Jacobi rotations are not accumulated.
MβMisINTEGER. The number of rows of the input matrix A.M >= 0.NβNisINTEGER. The number of columns of the input matrix A.M >= N >= 0.AβAisCOMPLEXarray, dimension(LDA,N).- On entry, M-by-N matrix A, such that
A*diag(D)represents the input matrix. - On exit,
A_onexit * diag(D_onexit)represents the input matrixA*diag(D)post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofD,TOLandNSWEEP.)
- On entry, M-by-N matrix A, such that
LDAβLDAisINTEGER. The leading dimension of the array A.LDA >= max(1,M).DβDisCOMPLEXarray, dimension(N). The array D accumulates the scaling factors from the complex scaled Jacobi rotations.- On entry,
A*diag(D)represents the input matrix. - On exit,
A_onexit*diag(D_onexit)represents the input matrix post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofA,TOLandNSWEEP.)
- On entry,
SVAβSVAisREALarray, dimension(N).- On entry,
SVAcontains the Euclidean norms of the columns of the matrixA*diag(D). - On exit,
SVAcontains the Euclidean norms of the columns of the matrixA_onexit*diag(D_onexit).
- On entry,
MVβMVisINTEGER.- If
JOBV = 'A', thenMVrows of V are post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'N', thenMVis not referenced.
- If
VβVisCOMPLEXarray, dimension(LDV,N).- If
JOBV = 'V'then N rows of V are post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'A'thenMVrows of V are post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'N', then V is not referenced.
- If
LDVβLDVisINTEGER. The leading dimension of the array V,LDV >= 1.- If
JOBV = 'V',LDV >= N. - If
JOBV = 'A',LDV >= MV.
- If
EPSβEPSisREAL.EPS = SLAMCH('Epsilon').SFMINβSFMINisREAL.SFMIN = SLAMCH('Safe Minimum').TOLβTOLisREAL.TOLis the threshold for Jacobi rotations. For a pairA(:,p),A(:,q)of pivot columns, the Jacobi rotation is applied only ifABS(COS(angle(A(:,p),A(:,q)))) > TOL.NSWEEPβNSWEEPisINTEGER.NSWEEPis the number of sweeps of Jacobi rotations to be performed.WORKβWORKisCOMPLEXarray, dimension(LWORK).LWORKβLWORKisINTEGER.LWORKis the dimension ofWORK.LWORK >= M.INFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -i, then the i-th argument had an illegal value.
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π₯ Further Details:
CGSVJ0 is used just to enable CGESVJ to call a simplified version of itself to work on a submatrix of the original matrix.
π«Ά Contributor:
Zlatko Drmac (Zagreb, Croatia)
π Bugs, Examples and Comments:
Please report all bugs and send interesting test examples and comments to drmac@math.hr. Thank you.
β Definition at line 216 of file cgsvj0.f.
π subroutine dgsvj0
subroutine dgsvj0 (character*1 jobv, integer m, integer n, double precision,
dimension( lda, * ) a, integer lda, double precision, dimension( n ) d,
double precision, dimension( n ) sva, integer mv, double precision,
dimension( ldv, * ) v, integer ldv, double precision eps, double
precision sfmin, double precision tol, integer nsweep, double precision,
dimension( lwork ) work, integer lwork, integer info)
DGSVJ0 pre-processor for the routine dgesvj.
π Purpose:
DGSVJ0 is called from DGESVJ as a pre-processor and that is its main purpose. It applies Jacobi rotations in the same way as DGESVJ does, but it does not check convergence (stopping criterion). Few tuning parameters (marked by [TP]) are available for the implementer.
π§ Parameters π§
JOBVβJOBVisCHARACTER*1. It specifies whether the output from this procedure is used to compute the matrix V:= 'V': the product of the Jacobi rotations is accumulated by postmultiplying the N-by-N array V. (See the description of V.)= 'A': the product of the Jacobi rotations is accumulated by postmultiplying the MV-by-N array V. (See the descriptions of MV and V.)= 'N': the Jacobi rotations are not accumulated.
MβMisINTEGER. The number of rows of the input matrix A.M >= 0.NβNisINTEGER. The number of columns of the input matrix A.M >= N >= 0.AβAisDOUBLE PRECISIONarray, dimension(LDA,N).- On entry, M-by-N matrix A, such that
A*diag(D)represents the input matrix. - On exit,
A_onexit * D_onexitrepresents the input matrixA*diag(D)post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofD,TOLandNSWEEP.)
- On entry, M-by-N matrix A, such that
LDAβLDAisINTEGER. The leading dimension of the array A.LDA >= max(1,M).DβDisDOUBLE PRECISIONarray, dimension(N). The array D accumulates the scaling factors from the fast scaled Jacobi rotations.- On entry,
A*diag(D)represents the input matrix. - On exit,
A_onexit*diag(D_onexit)represents the input matrix post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofA,TOLandNSWEEP.)
- On entry,
SVAβSVAisDOUBLE PRECISIONarray, dimension(N).- On entry,
SVAcontains the Euclidean norms of the columns of the matrixA*diag(D). - On exit,
SVAcontains the Euclidean norms of the columns of the matrixonexit*diag(D_onexit).
- On entry,
MVβMVisINTEGER.- If
JOBV = 'A', thenMVrows of V are post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'N', thenMVis not referenced.
- If
VβVisDOUBLE PRECISIONarray, dimension(LDV,N).- If
JOBV = 'V'then N rows of V are post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'A'thenMVrows of V are post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'N', then V is not referenced.
- If
LDVβLDVisINTEGER. The leading dimension of the array V,LDV >= 1.- If
JOBV = 'V',LDV >= N. - If
JOBV = 'A',LDV >= MV.
- If
EPSEPSβ it's aDOUBLE PRECISION, bestie, and you set it like this:
EPS = DLAMCH('Epsilon')
SFMINβ alsoDOUBLE PRECISION, also a one-liner:
SFMIN = DLAMCH('Safe Minimum')
TOLβDOUBLE PRECISION, and this one's the threshold for Jacobi rotations β¨. Here's the vibe: for a pairA(:,p),A(:,q)of pivot columns, the Jacobi rotation gets applied only ifDABS(COS(angle(A(:,p),A(:,q)))) > TOL. That's it. That's the whole gate. π
NSWEEPβINTEGER, and it's literally the number of sweeps of Jacobi rotations that are gonna be performed. No cap, just sweeps. π
WORKβDOUBLE PRECISION array, dimension (LWORK). It's the workspace, it works. π«Ά
LWORKβINTEGER, the dimension ofWORK. AndLWORK >= M. Respect the constraint or perish. π
INFOβINTEGER, the receipts:= 0: successful exit. π< 0: ifINFO = -i, then the i-th argument had an illegal value. Not me finding out argument number i was badβ¦ π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π Further Details:
DGSVJ0 is used just to enable DGESVJ to call a simplified version of itself to work on a submatrix of the original matrix. Lowkey recursive main character energy. π
π Contributors:
Zlatko Drmac (Zagreb, Croatia) and Kresimir Veselic (Hagen, Germany)
π Bugs, Examples and Comments:
Please report all bugs and send interesting test examples and comments to drmac@math.hr. Thank you. Fr fr, they want your weird little test cases. π
Definition at line 216 of file dgsvj0.f.
π subroutine sgsvj0
subroutine sgsvj0 (character*1 jobv, integer m, integer n, real, dimension(
lda, * ) a, integer lda, real, dimension( n ) d, real, dimension( n )
sva, integer mv, real, dimension( ldv, * ) v, integer ldv, real eps,
real sfmin, real tol, integer nsweep, real, dimension( lwork ) work,
integer lwork, integer info)
SGSVJ0 pre-processor for the routine sgesvj. Bestie, it's the opening act. π¬
π― Purpose:
SGSVJ0 is called from SGESVJ as a pre-processor and that is its main purpose. It applies Jacobi rotations in the same way as SGESVJ does, but it does not check convergence (stopping criterion). Few tuning parameters (marked by [TP]) are available for the implementer. So iconic of it β does the rotations, skips the vibe check. β¨
π Parameters
JOBVβCHARACTER*1. Specifies whether the output from this procedure is used to compute the matrixV:= 'V': the product of the Jacobi rotations is accumulated by postmultiplying the N-by-N arrayV. (See the description ofV.)= 'A': the product of the Jacobi rotations is accumulated by postmultiplying the MV-by-N arrayV. (See the descriptions ofMVandV.)= 'N': the Jacobi rotations are not accumulated. π
MβINTEGER. The number of rows of the input matrixA.M >= 0.NβINTEGER. The number of columns of the input matrixA.M >= N >= 0.AβREAL array, dimension (LDA,N). On entry, M-by-N matrixA, such thatA*diag(D)represents the input matrix. On exit,A_onexit * D_onexitrepresents the input matrixA*diag(D)post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofD,TOLandNSWEEP.) π¦LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).DβREAL array, dimension (N). The arrayDaccumulates the scaling factors from the fast scaled Jacobi rotations. On entry,A*diag(D)represents the input matrix. On exit,A_onexit*diag(D_onexit)represents the input matrix post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofA,TOLandNSWEEP.) π«SVAβREAL array, dimension (N). On entry,SVAcontains the Euclidean norms of the columns of the matrixA*diag(D). On exit,SVAcontains the Euclidean norms of the columns of the matrixonexit*diag(D_onexit). (Yes, exactly as written β no cap.) πΈMVβINTEGER.- If
JOBV = 'A', thenMVrows ofVare post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'N', thenMVis not referenced. Ghosted. π»
- If
VβREAL array, dimension (LDV,N).- If
JOBV = 'V'thenNrows ofVare post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'A'thenMVrows ofVare post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'N', thenVis not referenced. π«₯
- If
LDVβINTEGER. The leading dimension of the arrayV,LDV >= 1.- If
JOBV = 'V',LDV >= N. - If
JOBV = 'A',LDV >= MV.
- If
EPSβREAL:
EPS = SLAMCH('Epsilon')
SFMINβREAL:
SFMIN = SLAMCH('Safe Minimum')
TOLβREAL.TOLis the threshold for Jacobi rotations. For a pairA(:,p),A(:,q)of pivot columns, the Jacobi rotation is applied only ifABS(COS(angle(A(:,p),A(:,q)))) > TOL. Same rule, single precision edition. π₯NSWEEPβINTEGER.NSWEEPis the number of sweeps of Jacobi rotations to be performed.WORKβREAL array, dimension (LWORK).LWORKβINTEGER.LWORKis the dimension ofWORK.LWORK >= M.INFOβINTEGER:= 0: successful exit. β< 0: ifINFO = -i, then the i-th argument had an illegal value. π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π Further Details:
SGSVJ0 is used just to enable SGESVJ to call a simplified version of itself to work on a submatrix of the original matrix. It's giving "I contain multitudes, but make it a submatrix." π§
π Contributors:
Zlatko Drmac (Zagreb, Croatia) and Kresimir Veselic (Hagen, Germany)
π Bugs, Examples and Comments:
Please report all bugs and send interesting test examples and comments to drmac@math.hr. Thank you. π
Definition at line 216 of file sgsvj0.f.
π¦ subroutine zgsvj0
subroutine zgsvj0 (character*1 jobv, integer m, integer n, complex*16,
dimension( lda, * ) a, integer lda, complex*16, dimension( n ) d, double
precision, dimension( n ) sva, integer mv, complex*16, dimension( ldv, *
) v, integer ldv, double precision eps, double precision sfmin, double
precision tol, integer nsweep, complex*16, dimension( lwork ) work,
integer lwork, integer info)
ZGSVJ0 pre-processor for the routine zgesvj. The complex icon has entered the chat. π
π― Purpose:
ZGSVJ0 is called from ZGESVJ as a pre-processor and that is its main purpose. It applies Jacobi rotations in the same way as ZGESVJ does, but it does not check convergence (stopping criterion). Few tuning parameters (marked by [TP]) are available for the implementer. β¨
π Parameters
JOBVβCHARACTER*1. Specifies whether the output from this procedure is used to compute the matrixV:= 'V': the product of the Jacobi rotations is accumulated by postmultiplying the N-by-N arrayV. (See the description ofV.)= 'A': the product of the Jacobi rotations is accumulated by postmultiplying the MV-by-N arrayV. (See the descriptions ofMVandV.)= 'N': the Jacobi rotations are not accumulated. π
MβINTEGER. The number of rows of the input matrixA.M >= 0.NβINTEGER. The number of columns of the input matrixA.M >= N >= 0.AβCOMPLEX*16 array, dimension (LDA,N). On entry, M-by-N matrixA, such thatA*diag(D)represents the input matrix. On exit,A_onexit * diag(D_onexit)represents the input matrixA*diag(D)post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofD,TOLandNSWEEP.) πLDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).DβCOMPLEX*16 array, dimension (N). The arrayDaccumulates the scaling factors from the complex scaled Jacobi rotations. On entry,A*diag(D)represents the input matrix. On exit,A_onexit*diag(D_onexit)represents the input matrix post-multiplied by a sequence of Jacobi rotations, where the rotation threshold and the total number of sweeps are given inTOLandNSWEEP, respectively. (See the descriptions ofA,TOLandNSWEEP.) π«SVAβDOUBLE PRECISION array, dimension (N). On entry,SVAcontains the Euclidean norms of the columns of the matrixA*diag(D). On exit,SVAcontains the Euclidean norms of the columns of the matrixA_onexit*diag(D_onexit). πMVβINTEGER.- If
JOBV = 'A', thenMVrows ofVare post-multiplied by a sequence of Jacobi rotations. - If
JOBV = 'N', thenMVis not referenced. Ghosted again. π»
- If
Picking up the argument list right where we left off β every flag and condition stays exactly as it was, fr fr:
MVβMV is INTEGER. IfJOBV = 'A', thenMVrows ofVare post-multiplied by a sequence of Jacobi rotations. IfJOBV = 'N', thenMVis not referenced.VβV is COMPLEX*16 array, dimension (LDV,N). IfJOBV = 'V'thenNrows ofVare post-multiplied by a sequence of Jacobi rotations. IfJOBV = 'A'thenMVrows ofVare post-multiplied by a sequence of Jacobi rotations. IfJOBV = 'N', thenVis not referenced.LDVβLDV is INTEGER. The leading dimension of the arrayV,LDV >= 1. IfJOBV = 'V',LDV >= N. IfJOBV = 'A',LDV >= MV.EPSβEPS is DOUBLE PRECISION.EPS = DLAMCH('Epsilon').SFMINβSFMIN is DOUBLE PRECISION.SFMIN = DLAMCH('Safe Minimum').TOLβTOL is DOUBLE PRECISION.TOLis the threshold for Jacobi rotations. For a pairA(:,p), A(:,q)of pivot columns, the Jacobi rotation is applied only ifABS(COS(angle(A(:,p),A(:,q)))) > TOL.NSWEEPβNSWEEP is INTEGER.NSWEEPis the number of sweeps of Jacobi rotations to be performed.WORKβWORK is COMPLEX*16 array, dimension (LWORK).LWORKβLWORK is INTEGER.LWORKis the dimension ofWORK.LWORK >= M.INFOβINFO is INTEGER.= 0: successful exit.< 0: ifINFO = -i, then thei-th argument had an illegal value.
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
ZGSVJ0 is used just to enable ZGESVJ to call a simplified version of itself to work on a submatrix of the original matrix.
π Contributor:
Zlatko Drmac (Zagreb, Croatia)
π Bugs, Examples and Comments:
Please report all bugs and send interesting test examples and comments to drmac@math.hr. Thank you.
Definition at line 216 of file zgsvj0.f.
π€ Author
Generated automatically by Doxygen for LAPACK from the source code.
π And thatβs the whole page, bestie! This lovely little number is LAPACK Version 3.12.0, page gsvj0(3) β no cap, it ate. π
π¦ 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