Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?gebak
Transforms eigenvectors of a balanced matrix to those of the original nonsymmetric matrix.
Syntax
call sgebak ( job , side , n , ilo , ihi , scale , m , v , ldv , info )
call dgebak ( job , side , n , ilo , ihi , scale , m , v , ldv , info )
call cgebak ( job , side , n , ilo , ihi , scale , m , v , ldv , info )
call zgebak ( job , side , n , ilo , ihi , scale , m , v , ldv , info )
call gebak ( v , scale [ , ilo ] [ , ihi ] [ , job ] [ , side ] [ , info ] )
Include Files
mkl.fi , mkl_lapack.f90
Description
sgebak dgebak cgebak zgebak gebak
The routine is intended to be used after a matrix A has been balanced by a call to ?gebal , and eigenvectors of the balanced matrix A''22 have subsequently been computed. For a description of balancing, see gebal . The balanced matrix A'' is obtained as A''= D*P*A*P^{T}*inv(D) , where P is a permutation matrix and D is a diagonal scaling matrix. This routine transforms the eigenvectors as follows:
if x is a right eigenvector of A'' , then P:code:`T` * inv(D)*x is a right eigenvector of A ; if y is a left eigenvector of A'' , then P^{T}*D*y is a left eigenvector of A .
Input Parameters
job
CHARACTER*1 . Must be ‘N’ or ‘P’ or ‘S’ or ‘B’ . The same parameter job as supplied to ?gebal .
side
CHARACTER*1 . Must be ‘L’ or ‘R’ .
If side = 'L' , then left eigenvectors are transformed. If side = 'R' , then right eigenvectors are transformed.
n
INTEGER . The number of rows of the matrix of eigenvectors ( n ≥ 0).
ilo , ihi
INTEGER . The values ilo and ihi , as returned by ?gebal . (If n > 0 , then 1 ≤ilo≤ihi≤n ;
if n = 0 , then ilo = 1 and ihi = 0 .)
- scale
-
REAL for single-precision flavors DOUBLE PRECISION for double-precision flavors Array, size at least max(1, n ). Contains details of the permutations and/or the scaling factors used to balance the original general matrix, as returned by ?gebal .
m
INTEGER . The number of columns of the matrix of eigenvectors ( m≥ 0 ).
- v
-
REAL for sgebak DOUBLE PRECISION for dgebak COMPLEX for cgebak DOUBLE COMPLEX for zgebak . Arrays:
v ( ldv ,*) contains the matrix of left or right eigenvectors to be transformed.
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 gebak interface are the following:
v
Holds the matrix V of size ( n,m ).
scale
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
Must be ‘L’ or ‘R’ . The default value is ‘L’ .
Application Notes
The errors in this routine are negligible.
The approximate number of floating-point operations is approximately proportional to m*n .