Developer Reference

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*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
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
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
.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804