.TH "SRC/zgsvj1.f" 3 "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME SRC/zgsvj1.f .SH SYNOPSIS .br .PP .SS "Functions/Subroutines" .in +1c .ti -1c .RI "subroutine \fBzgsvj1\fP (jobv, m, n, n1, a, lda, d, sva, mv, v, ldv, eps, sfmin, tol, nsweep, work, lwork, info)" .br .RI "\fBZGSVJ1\fP pre-processor for the routine zgesvj, applies Jacobi rotations targeting only particular pivots\&. " .in -1c .SH "Function/Subroutine Documentation" .PP .SS "subroutine zgsvj1 (character*1 jobv, integer m, integer n, integer n1, 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)" .PP \fBZGSVJ1\fP pre-processor for the routine zgesvj, applies Jacobi rotations targeting only particular pivots\&. .PP \fBPurpose:\fP .RS 4 .PP .nf !> !> ZGSVJ1 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 targets only particular pivots and it does not check convergence !> (stopping criterion)\&. Few tuning parameters (marked by [TP]) are !> available for the implementer\&. !> !> Further Details !> ~~~~~~~~~~~~~~~ !> ZGSVJ1 applies few sweeps of Jacobi rotations in the column space of !> the input M-by-N matrix A\&. The pivot pairs are taken from the (1,2) !> off-diagonal block in the corresponding N-by-N Gram matrix A^T * A\&. The !> block-entries (tiles) of the (1,2) off-diagonal block are marked by the !> [x]'s in the following scheme: !> !> | * * * [x] [x] [x]| !> | * * * [x] [x] [x]| Row-cycling in the nblr-by-nblc [x] blocks\&. !> | * * * [x] [x] [x]| Row-cyclic pivoting inside each [x] block\&. !> |[x] [x] [x] * * * | !> |[x] [x] [x] * * * | !> |[x] [x] [x] * * * | !> !> In terms of the columns of A, the first N1 columns are rotated 'against' !> the remaining N-N1 columns, trying to increase the angle between the !> corresponding subspaces\&. The off-diagonal block is N1-by(N-N1) and it is !> tiled using quadratic tiles of side KBL\&. Here, KBL is a tuning parameter\&. !> The number of sweeps is given in NSWEEP and the orthogonality threshold !> is given in TOL\&. !> .fi .PP .RE .PP \fBParameters\fP .RS 4 \fIJOBV\fP .PP .nf !> JOBV is CHARACTER*1 !> 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\&. !> .fi .PP .br \fIM\fP .PP .nf !> M is INTEGER !> The number of rows of the input matrix A\&. M >= 0\&. !> .fi .PP .br \fIN\fP .PP .nf !> N is INTEGER !> The number of columns of the input matrix A\&. !> M >= N >= 0\&. !> .fi .PP .br \fIN1\fP .PP .nf !> N1 is INTEGER !> N1 specifies the 2 x 2 block partition, the first N1 columns are !> rotated 'against' the remaining N-N1 columns of A\&. !> .fi .PP .br \fIA\fP .PP .nf !> A is COMPLEX*16 array, dimension (LDA,N) !> On entry, M-by-N matrix A, such that A*diag(D) represents !> the input matrix\&. !> On exit, !> A_onexit * D_onexit represents the input matrix A*diag(D) !> post-multiplied by a sequence of Jacobi rotations, where the !> rotation threshold and the total number of sweeps are given in !> TOL and NSWEEP, respectively\&. !> (See the descriptions of N1, D, TOL and NSWEEP\&.) !> .fi .PP .br \fILDA\fP .PP .nf !> LDA is INTEGER !> The leading dimension of the array A\&. LDA >= max(1,M)\&. !> .fi .PP .br \fID\fP .PP .nf !> D is COMPLEX*16 array, 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 in !> TOL and NSWEEP, respectively\&. !> (See the descriptions of N1, A, TOL and NSWEEP\&.) !> .fi .PP .br \fISVA\fP .PP .nf !> SVA is DOUBLE PRECISION array, dimension (N) !> On entry, SVA contains the Euclidean norms of the columns of !> the matrix A*diag(D)\&. !> On exit, SVA contains the Euclidean norms of the columns of !> the matrix onexit*diag(D_onexit)\&. !> .fi .PP .br \fIMV\fP .PP .nf !> MV is INTEGER !> If JOBV = 'A', then MV rows of V are post-multiplied by a !> sequence of Jacobi rotations\&. !> If JOBV = 'N', then MV is not referenced\&. !> .fi .PP .br \fIV\fP .PP .nf !> V is COMPLEX*16 array, dimension (LDV,N) !> If JOBV = 'V' then N rows of V are post-multiplied by a !> sequence of Jacobi rotations\&. !> If JOBV = 'A' then MV rows of V are post-multiplied by a !> sequence of Jacobi rotations\&. !> If JOBV = 'N', then V is not referenced\&. !> .fi .PP .br \fILDV\fP .PP .nf !> LDV is INTEGER !> The leading dimension of the array V, LDV >= 1\&. !> If JOBV = 'V', LDV >= N\&. !> If JOBV = 'A', LDV >= MV\&. !> .fi .PP .br \fIEPS\fP .PP .nf !> EPS is DOUBLE PRECISION !> EPS = DLAMCH('Epsilon') !> .fi .PP .br \fISFMIN\fP .PP .nf !> SFMIN is DOUBLE PRECISION !> SFMIN = DLAMCH('Safe Minimum') !> .fi .PP .br \fITOL\fP .PP .nf !> TOL is DOUBLE PRECISION !> TOL is the threshold for Jacobi rotations\&. For a pair !> A(:,p), A(:,q) of pivot columns, the Jacobi rotation is !> applied only if ABS(COS(angle(A(:,p),A(:,q)))) > TOL\&. !> .fi .PP .br \fINSWEEP\fP .PP .nf !> NSWEEP is INTEGER !> NSWEEP is the number of sweeps of Jacobi rotations to be !> performed\&. !> .fi .PP .br \fIWORK\fP .PP .nf !> WORK is COMPLEX*16 array, dimension (LWORK) !> .fi .PP .br \fILWORK\fP .PP .nf !> LWORK is INTEGER !> LWORK is the dimension of WORK\&. LWORK >= M\&. !> .fi .PP .br \fIINFO\fP .PP .nf !> INFO is INTEGER !> = 0: successful exit\&. !> < 0: if INFO = -i, then the i-th argument had an illegal value !> .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBContributor:\fP .RS 4 Zlatko Drmac (Zagreb, Croatia) .RE .PP .PP Definition at line \fB234\fP of file \fBzgsvj1\&.f\fP\&. .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.