Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?ggbak
Forms the right or left eigenvectors of a generalized eigenvalue problem.
Syntax
call sggbak ( job , side , n , ilo , ihi , lscale , rscale , m , v , ldv , info )
call dggbak ( job , side , n , ilo , ihi , lscale , rscale , m , v , ldv , info )
call cggbak ( job , side , n , ilo , ihi , lscale , rscale , m , v , ldv , info )
call zggbak ( job , side , n , ilo , ihi , lscale , rscale , m , v , ldv , info )
call ggbak ( v [ , ilo ] [ , ihi ] [ , lscale ] [ , rscale ] [ , job ] [ , info ] )
Include Files
mkl.fi , mkl_lapack.f90
Description
sggbak dggbak cggbak zggbak ggbak
The routine forms the right or left eigenvectors of a real/complex generalized eigenvalue problem
A*x = λ*B*x
by backward transformation on the computed eigenvectors of the balanced pair of matrices output by ggbal .
Input Parameters
job
CHARACTER*1 . Specifies the type of backward transformation required. Must be ‘N’ , ‘P’ , ‘S’ , or ‘B’ .
If job = 'N' , then no operations are done; return. If job = 'P' , then do backward transformation for permutation only. If job = 'S' , then do backward transformation for scaling only. If job = 'B' , then do backward transformation for both permutation and scaling. This argument must be the same as the argument job supplied to ?ggbal .
side
CHARACTER*1 . Must be ‘L’ or ‘R’ .
If side = 'L' , then v contains left eigenvectors. If side = 'R' , then v contains right eigenvectors.
n
INTEGER . The number of rows of the matrix V ( n ≥ 0).
ilo , ihi
INTEGER . The integers ilo and ihi determined by ?gebal . Constraint:
If n > 0 , then 1 ≤ ilo ≤ ihi ≤ n ; if n = 0 , then ilo = 1 and ihi = 0 .
- lscale , rscale
-
REAL for single precision flavors DOUBLE PRECISION for double precision flavors. Arrays, size at least max(1, n ). The array lscale contains details of the permutations and/or scaling factors applied to the left side of A and B , as returned by ?ggbal . The array rscale contains details of the permutations and/or scaling factors applied to the right side of A and B , as returned by ?ggbal .
m
INTEGER . The number of columns of the matrix V
( m ≥ 0).
- v
-
REAL for sggbak DOUBLE PRECISION for dggbak COMPLEX for cggbak DOUBLE COMPLEX for zggbak .
Array v ( ldv ,*) . Contains the matrix of right or left eigenvectors to be transformed, as returned by tgevc .
The second dimension of v must be at least max(1, m ).
ldv
INTEGER . The leading dimension of v ; at least max(1, n ) .
Output Parameters
- v
-
Overwritten by the transformed eigenvectors
info
INTEGER .
If info = 0 , the execution is successful.
If info = -i , the i th parameter had an illegal value.
Return Values
No return value, info is an Output Parameter.
LAPACK 95 Interface Notes
Routines in Fortran 95 interface have fewer arguments in the calling sequence than their FORTRAN 77 counterparts. For general conventions applied to skip redundant or restorable arguments, see LAPACK 95 Interface Conventions .
Specific details for the routine ggbak interface are the following:
v
Holds the matrix V of size ( n,m ).
lscale
Holds the vector of length n .
rscale
Holds the vector of length n .
ilo
Default value for this argument is ilo = 1 .
ihi
Default value for this argument is ihi = n .
job
Must be ‘B’ , ‘S’ , ‘P’ , or ‘N’ . The default value is ‘B’ .
side
If omitted, this argument is restored based on the presence of arguments lscale and rscale as follows:
side = 'L' , if lscale is present and rscale omitted,
side = 'R' , if lscale is omitted and rscale present.
Note that there will be an error condition if both lscale and rscale are present or if they both are omitted.