Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?gsvj0
Pre-processor for the routine ?gesvj .
Syntax
call sgsvj0 ( jobv , m , n , a , lda , d , sva , mv , v , ldv , eps , sfmin , tol , nsweep , work , lwork , info )
call dgsvj0 ( jobv , m , n , a , lda , d , sva , mv , v , ldv , eps , sfmin , tol , nsweep , work , lwork , info )
call cgsvj0 ( jobv , m , n , a , lda , d , sva , mv , v , ldv , eps , sfmin , tol , nsweep , work , lwork , info )
call zgsvj0 ( jobv , m , n , a , lda , d , sva , mv , v , ldv , eps , sfmin , tol , nsweep , work , lwork , info )
Include Files
mkl.fi
Description
sgsvj0 dgsvj0 gsvj0
This routine is called from ?gesvj (Computes the singular value decomposition of a real matrix using Jacobi plane rotations.) as a pre-processor and that is its main purpose. It applies Jacobi rotations in the same way as ?gesvj does, but it does not check convergence (stopping criterion).
The routine ?gsvj0 enables ?gesvj to use a simplified version of itself to work on a submatrix of the original matrix.
Input Parameters
- jobv
-
CHARACTER*1 . Must be ‘V’ , ‘A’ , or ‘N’ . Specifies whether the output from this routine is used to compute the matrix V . If jobv = 'V' , the product of the Jacobi rotations is accumulated by post-multiplying the n -by- n array v . If jobv = 'A' , the product of the Jacobi rotations is accumulated by post-multiplying the mv -by- n array v . If jobv = 'N' , the Jacobi rotations are not accumulated.
- m
-
INTEGER . The number of rows of the input matrix A ( m ≥ 0).
- n
-
INTEGER . The number of columns of the input matrix B ( m ≥ n ≥ 0).
- a
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . COMPLEX for cgsvj0 DOUBLE COMPLEX for zgsvj0 Array, DIMENSION ( lda , n ). Contains the m -by- n matrix A , such that A*diag(D) represents the input matrix.
- lda
-
INTEGER . The leading dimension of a ; at least max(1, m) .
- d
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . COMPLEX for cgsvj0 DOUBLE COMPLEX for zgsvj0 Array, DIMENSION ( n ). Contains the diagonal matrix D that accumulates the scaling factors from the fast scaled Jacobi rotations. On entry A*diag(D) represents the input matrix.
- sva
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . REAL for cgsvj0 DOUBLE PRECISION for zgsvj0 . Array, DIMENSION ( n ). Contains the Euclidean norms of the columns of the matrix A*diag(D) .
- mv
-
INTEGER . The leading dimension of b ; at least max(1, p ). 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
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . COMPLEX for cgsvj0 DOUBLE COMPLEX for zgsvj0 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
-
INTEGER . The leading dimension of the array v ; ldv ≥ 1 ldv≥n if jobv = 'V' ; ldv≥mv if jobv = 'A' .
- eps
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . REAL for cgsvj0 DOUBLE PRECISION for zgsvj0 . The relative machine precision (epsilon) returned by the routine ?lamch (Determines machine parameters for floating-point arithmetic.) .
- sfmin
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . REAL for cgsvj0 DOUBLE PRECISION for zgsvj0 . Value of safe minimum returned by the routine ?lamch (Determines machine parameters for floating-point arithmetic.) .
- tol
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . REAL for cgsvj0 DOUBLE PRECISION for zgsvj0 . 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
-
INTEGER . The number of sweeps of Jacobi rotations to be performed.
- work
-
REAL for sgsvj0 DOUBLE PRECISION for dgsvj0 . COMPLEX for cgsvj0 DOUBLE COMPLEX for zgsvj0 Workspace array, DIMENSION ( lwork ).
- lwork
-
INTEGER . The size of the array work ; at least max(1, m) .
Output Parameters
- a
-
On exit, A*diag(D) 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
- d
-
On exit, A*diag(D) 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.
- sva
-
On exit, contains the Euclidean norms of the columns of the output matrix A*diag(D) .
- v
-
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.
info
INTEGER .
If info = 0 , the execution is successful.
If info = -i , the i -th parameter had an illegal value.