Transforms eigenvectors of a balanced matrix to those of the original nonsymmetric matrix.
FORTRAN 77:
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)
Fortran 95:
call gebak(v, scale [,ilo] [,ihi] [,job] [,side] [,info])
C:
lapack_int LAPACKE_sgebak( int matrix_order, char job, char side, lapack_int n, lapack_int ilo, lapack_int ihi, const float* scale, lapack_int m, float* v, lapack_int ldv );
lapack_int LAPACKE_dgebak( int matrix_order, char job, char side, lapack_int n, lapack_int ilo, lapack_int ihi, const double* scale, lapack_int m, double* v, lapack_int ldv );
lapack_int LAPACKE_cgebak( int matrix_order, char job, char side, lapack_int n, lapack_int ilo, lapack_int ihi, const float* scale, lapack_int m, lapack_complex_float* v, lapack_int ldv );
lapack_int LAPACKE_zgebak( int matrix_order, char job, char side, lapack_int n, lapack_int ilo, lapack_int ihi, const double* scale, lapack_int m, lapack_complex_double* v, lapack_int ldv );
The FORTRAN 77 interfaces are specified in the mkl_lapack.fi and mkl_lapack.h include files, the Fortran 95 interfaces are specified in the lapack.f90 include file, and the C interfaces are specified in the mkl_lapacke.h include file.
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*PT*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 PT*inv(D)*x is a right eigenvector of A; if x is a left eigenvector of A'', then PT*D*y is a left eigenvector of A.
The data types are given for the Fortran interface. A <datatype> placeholder, if present, is used for the C interface data types in the C interface section above. See C Interface Conventions for the C interface principal conventions and type defintions.
CHARACTER*1. Must be 'N' or 'P' or 'S' or 'B'. The same parameter job as supplied to ?gebal.
CHARACTER*1. Must be 'L' or 'R'.
If side = 'L' , then left eigenvectors are transformed.
If side = 'R', then right eigenvectors are transformed.
INTEGER. The number of rows of the matrix of eigenvectors (n ≥ 0).
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.)
REAL for single-precision flavors
DOUBLE PRECISION for double-precision flavors
Array, DIMENSION 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.
INTEGER. The number of columns of the matrix of eigenvectors (m ≥ 0).
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).
INTEGER. The first dimension of v; at least max(1, n).
Overwritten by the transformed eigenvectors.
INTEGER.
If info = 0, the execution is successful.
If info = -i, the i-th parameter had an illegal value.
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 Fortran 95 Interface Conventions.
Specific details for the routine gebak interface are the following:
Holds the matrix V of size (n,m).
Holds the vector of length n.
Default value for this argument is ilo = 1.
Default value for this argument is ihi = n.
Must be 'B', 'S', 'P', or 'N'. The default value is 'B'.
Must be 'L' or 'R'. The default value is 'L'.
Copyright © 1994 - 2010, Intel Corporation. All rights reserved.