Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
Contents

?geev

Computes the eigenvalues and left and right eigenvectors of a general matrix.

Syntax

lapack_int LAPACKE_sgeev
(
int
matrix_layout
,
char
jobvl
,
char
jobvr
,
lapack_int
n
,
float*
a
,
lapack_int
lda
,
float*
wr
,
float*
wi
,
float*
vl
,
lapack_int
ldvl
,
float*
vr
,
lapack_int
ldvr
);
lapack_int LAPACKE_dgeev
(
int
matrix_layout
,
char
jobvl
,
char
jobvr
,
lapack_int
n
,
double*
a
,
lapack_int
lda
,
double*
wr
,
double*
wi
,
double*
vl
,
lapack_int
ldvl
,
double*
vr
,
lapack_int
ldvr
);
lapack_int LAPACKE_cgeev
(
int
matrix_layout
,
char
jobvl
,
char
jobvr
,
lapack_int
n
,
lapack_complex_float*
a
,
lapack_int
lda
,
lapack_complex_float*
w
,
lapack_complex_float*
vl
,
lapack_int
ldvl
,
lapack_complex_float*
vr
,
lapack_int
ldvr
);
lapack_int LAPACKE_zgeev
(
int
matrix_layout
,
char
jobvl
,
char
jobvr
,
lapack_int
n
,
lapack_complex_double*
a
,
lapack_int
lda
,
lapack_complex_double*
w
,
lapack_complex_double*
vl
,
lapack_int
ldvl
,
lapack_complex_double*
vr
,
lapack_int
ldvr
);
Include Files
  • mkl.h
Description
The routine computes for an
n
-by-
n
real/complex nonsymmetric matrix
A
, the eigenvalues and, optionally, the left and/or right eigenvectors. The right eigenvector
v
of
A
satisfies
A
*
v
=
λ
*
v
where
λ
is its eigenvalue.
The left eigenvector
u
of
A
satisfies
u
H
*
A
=
λ
*
u
H
where
u
H
denotes the conjugate transpose of
u
. The computed eigenvectors are normalized to have Euclidean norm equal to 1 and largest component real.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
jobvl
Must be
'N'
or
'V'
.
If
jobvl
=
'N'
, then left eigenvectors of
A
are not computed.
If
jobvl
=
'V'
, then left eigenvectors of
A
are computed.
jobvr
Must be
'N'
or
'V'
.
If
jobvr
=
'N'
, then right eigenvectors of
A
are not computed.
If
jobvr
=
'V'
, then right eigenvectors of
A
are computed.
n
The order of the matrix
A
(
n
0
).
a
a
(size at least max(1,
lda
*
n
))
is an array containing the
n
-by-
n
matrix
A
.
lda
The leading dimension of the array
a
. Must be at least
max(1,
n
)
.
ldvl
,
ldvr
The leading dimensions of the output arrays
vl
and
vr
, respectively.
Constraints:
ldvl
1
;
ldvr
1
.
If
jobvl
=
'V'
,
ldvl
max(1,
n
)
;
If
jobvr
=
'V'
,
ldvr
max(1,
n
)
.
Output Parameters
a
On exit, this array is overwritten.
wr
,
wi
Arrays, size at least
max (1,
n
)
each.
Contain the real and imaginary parts, respectively, of the computed eigenvalues. Complex conjugate pairs of eigenvalues appear consecutively with the eigenvalue having positive imaginary part first.
w
Array, size at least
max(1,
n
)
.
Contains the computed eigenvalues.
vl
,
vr
Arrays:
vl
(size at least max(1,
ldvl
*
n
))
.
If
jobvl
=
'N'
,
vl
is not referenced.
For real flavors
:
If the
j
-th eigenvalue is real,
the
i
-th component of the
j
-th eigenvector
u
j
is stored in
vl
[(
i
- 1) + (
j
- 1)*
ldvl
]
for column major layout and in
vl
[(
i
- 1)*
ldvl
+ (
j
- 1)]
for row major layout.
.
If the
j
-th and (
j
+1)-st eigenvalues form a complex conjugate pair, then for
i = sqrt(-1)
,
the
k
-th component of the
j
-th eigenvector
u
j
is
vl
[(
k
- 1) + (
j
- 1)*
ldvl
] + i*
vl
[(
k
- 1) +
j
*
ldvl
] for column major layout and as
vl
[(
k
- 1)*
ldvl
+ (
j
- 1)] + i*
vl
[(
k
-1)*
ldvl
+
j
] for row major layout. Similarly, the
k
-th component of vector (
j
+1)
u
j
+ 1
is
vl
[(
k
- 1) + (
j
- 1)*
ldvl
] - i*
vl
[(
k
- 1) +
j
*
ldvl
] for column major layout and as
vl
[(
k
- 1)*
ldvl
+ (
j
- 1)] -i*
vl
[(
k
- 1)*
ldvl
+
j
] for row major layout.
.
For complex flavors
:
The
i
-th component of the
j
-th eigenvector
u
j
is stored in
vl
[(
i
- 1) + (
j
- 1)*
ldvl
]
for column major layout and in
vl
[(
i
- 1)*
ldvl
+(
j
- 1)]
for row major layout.
vr
(size at least max(1,
ldvr
*
n
))
.
If
jobvr
=
'N'
,
vr
is not referenced.
For real flavors
:
If the
j
-th eigenvalue is real, then
the
i
-th component of
j
-th eigenvector
v
j
is stored in
vr
[(
i
- 1) + (
j
- 1)*
ldvr
]
for column major layout and in
vr
[(
i
- 1)*
ldvr
+ (
j
- 1)]
for row major layout.
.
If the
j
-th and (
j
+1)-st eigenvalues form a complex conjugate pair, then for
i
= sqrt(-1)
,
the
k
-th component of the
j
-th eigenvector
v
j
is
vr
[(
k
- 1) + (
j
- 1)*
ldvr
] +i*
vr
[(
k
- 1) +
j
*
ldvr
] for column major layout and as
vr
[(
k
- 1)*
ldvr
+ (
j
- 1)] + i*
vr
[(
k
- 1)*
ldvr
+
j
] for row major layout. Similarly, the
k
-th component of vector
j
+ 1)
v
j
+ 1
is
vr
[(
k
- 1) + (
j
- 1)*
ldvr
] - i*
vr
[(
k
- 1) +
j
*
ldvr
] for column major layout and as
vr
[(
k
- 1)*
ldvr
+ (
j
- 1)] - i*
vr
[(
k
- 1)*
ldvr
+
j
] for row major layout
.
For complex flavors
:
The
i
-th component of the
j
-th eigenvector
v
j
is stored in
vr
[(
i
- 1) + (
j
- 1)*
ldvr
]
for column major layout and in
vr
[(
i
- 1)*
ldvr
+ (
j
- 1)]
for row major layout.
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.
If
info
=
i
, the QR algorithm failed to compute all the eigenvalues, and no eigenvectors have been computed; elements
i
+1:
n
of
wr
and
wi
(for real flavors) or
w
(for complex flavors) contain those eigenvalues which have converged.

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