Developer Reference for Intel® oneAPI Math Kernel Library for C
?ggbak
Forms the right or left eigenvectors of a generalized eigenvalue problem.
Syntax
lapack_int LAPACKE_sggbak(int matrix_layout, char job, char side, lapack_int n,
lapack_int ilo, lapack_int ihi, const float *lscale,
const float *rscale, lapack_int m, float *v, lapack_int ldv);
lapack_int LAPACKE_dggbak(int matrix_layout, char job, char side, lapack_int n,
lapack_int ilo, lapack_int ihi, const double *lscale,
const double *rscale, lapack_int m, double *v, lapack_int ldv);
lapack_int LAPACKE_cggbak(int matrix_layout, char job, char side, lapack_int n,
lapack_int ilo, lapack_int ihi, const float *lscale,
const float *rscale, lapack_int m, lapack_complex_float *v,
lapack_int ldv);
lapack_int LAPACKE_zggbak(int matrix_layout, char job, char side, lapack_int n,
lapack_int ilo, lapack_int ihi, const double *lscale,
const double *rscale, lapack_int m, lapack_complex_double *v,
lapack_int ldv);
Include Files
mkl.h
Description
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
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
job
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
Must be ‘L’ or ‘R’ .
If side = 'L' , then v contains left eigenvectors. If side = 'R' , then v contains right eigenvectors.
n
The number of rows of the matrix V ( n ≥ 0).
ilo , ihi
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
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 (size max(1, ldv * m ) for column major layout and max(1, ldv * n ) for row major layout) . 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
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.