Developer Reference for Intel® oneAPI Math Kernel Library for C
?gebak
Transforms eigenvectors of a balanced matrix to those of the original nonsymmetric matrix.
Syntax
lapack_int LAPACKE_sgebak ( intmatrix_layout , charjob , charside , lapack_intn , lapack_intilo , lapack_intihi , const float*scale , lapack_intm , float*v , lapack_intldv );
lapack_int LAPACKE_dgebak ( intmatrix_layout , charjob , charside , lapack_intn , lapack_intilo , lapack_intihi , const double*scale , lapack_intm , double*v , lapack_intldv );
lapack_int LAPACKE_cgebak ( intmatrix_layout , charjob , charside , lapack_intn , lapack_intilo , lapack_intihi , const float*scale , lapack_intm , lapack_complex_float*v , lapack_intldv );
lapack_int LAPACKE_zgebak ( intmatrix_layout , charjob , charside , lapack_intn , lapack_intilo , lapack_intihi , const double*scale , lapack_intm , lapack_complex_double*v , lapack_intldv );
Include Files
mkl.h
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
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
job
Must be ‘N’ or ‘P’ or ‘S’ or ‘B’ . The same parameter job as supplied to ?gebal .
side
Must be ‘L’ or ‘R’ .
If side = 'L' , then left eigenvectors are transformed. If side = 'R' , then right eigenvectors are transformed.
n
The number of rows of the matrix of eigenvectors ( n ≥ 0).
ilo , ihi
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
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 (size max(1, ldv * n ) for column major layout and max(1, ldv * m ) for row major layout) contains the matrix of left or right eigenvectors to be transformed.
The second dimension of v must be at least max(1, m ).
ldv
The leading dimension of v ; at least max(1, n ) for column major layout and at least max(1, m ) for row major layout .
Output Parameters
- v
-
Overwritten by the transformed eigenvectors.
Return Values
This function returns a value info .
If info=0 , the execution is successful.
If info = -i , the i -th parameter had an illegal value.
LAPACK 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.
Application Notes
The errors in this routine are negligible.
The approximate number of floating-point operations is approximately proportional to m*n .