ZGSVJ1(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’– ZGSVJ1(3) β€” Library Functions Manual πŸ’–

okay so bestie, welcome to the ZGSVJ1(3) page from the Library Functions Manual. The header is literally /home/abui...RC/zgsvj1.f(3) on both sides β€” it's giving "file path but make it a title", and we're obsessed. This is the LAPACK Fortran page for ZGSVJ1, and we're keeping every technical crumb, no cap. πŸ’…

🌸 NAME 🌸

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zgsvj1.f


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

   subroutine ZGSVJ1 (jobv, m, n, n1, a, lda, d, sva, mv, v, ldv, eps,
       sfmin, tol, nsweep, work, lwork, info)
       ZGSVJ1 pre-processor for the routine zgesvj, applies Jacobi
       rotations targeting only particular pivots.

🌸 Function/Subroutine Documentation 🌸

   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)
       ZGSVJ1 pre-processor for the routine zgesvj, applies Jacobi rotations
       targeting only particular pivots.

πŸŽ€ Purpose πŸŽ€

So ZGSVJ1 gets called from ZGESVJ as a pre-processor, and that's its whole main-character job. It applies Jacobi rotations exactly the way ZGESVJ does, but with a twist: it only targets particular pivots, and it does not check convergence (the stopping criterion). There are a few tuning parameters marked by [TP] available for whoever is implementing this. 🫢

πŸ¦‹ Further Details πŸ¦‹

ZGSVJ1 does a few sweeps of Jacobi rotations in the column space of the input M-by-N matrix A. The pivot pairs come from the (1,2) off-diagonal block in the corresponding N-by-N Gram matrix A^T * A. The block-entries (tiles) of that (1,2) off-diagonal block are marked by the [x]'s in this exact 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 get rotated 'against' the remaining N-N1 columns, trying to increase the angle between the corresponding subspaces. That off-diagonal block is N1-by-(N-N1) and it's 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. ✨

πŸ’… Parameters πŸ’…

  • JOBV β€” JOBV is CHARACTER*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 β€” M is INTEGER. The number of rows of the input matrix A. M >= 0.
  • N β€” N is INTEGER. The number of columns of the input matrix A. M >= N >= 0.
  • N1 β€” 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.
  • A β€” 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.)
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M).
  • D β€” 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.)
  • SVA β€” 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).
  • MV β€” 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.
  • V β€” 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.
  • LDV β€” LDV is INTEGER. The leading dimension of the array V, LDV >= 1. If JOBV = 'V', LDV >= N. If JOBV = '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. 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.
  • NSWEEP β€” NSWEEP is INTEGER. NSWEEP is the number of sweeps of Jacobi rotations to be performed.
  • WORK β€” WORK is COMPLEX*16 array, dimension (LWORK).
  • LWORK β€” LWORK is INTEGER. LWORK is the dimension of WORK. LWORK >= M.
  • INFO β€” INFO is INTEGER. = 0: successful exit. < 0: if INFO = -i, then the i-th argument had an illegal value.

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ“ Contributor πŸ“

  • Zlatko Drmac (Zagreb, Croatia)

πŸ“ Definition at line 234 of file zgsvj1.f.

πŸ’€ Author πŸ’€

Generated automatically by Doxygen for LAPACK from the source code.


okay that's the whole page, bestie. Cute sign-off: the footer gives source/version LAPACK, Version 3.12.0, and /home/abui...RC/zgsvj1.f(3) β€” that's the whole source/version/date line situation, exactly as it shows up, and we're not inventing anything extra. slay πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from