Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?gebak

Transforms eigenvectors of a balanced matrix to those of the original nonsymmetric matrix.

Syntax

lapack_int LAPACKE_sgebak( int matrix_layout, 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_layout, 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_layout, 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_layout, 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 );

Include Files
  • mkl.h
Description

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 y is a left eigenvector of A'', then PT*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 iloihin;

if n = 0, then ilo = 1 and ihi = 0.)

scale

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

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.

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.

Application Notes

The errors in this routine are negligible.

The approximate number of floating-point operations is approximately proportional to m*n.