# left and right eigenvector

## left and right eigenvector

Hi,

I'M trying to use the ippmEigenValuesVectorsLeft_m_64f and ippmEigenValuesVectorsRight_m_64f functions.

I think there is a bug (or I missunderstand) the defintion:

A*z=λ*z for the right eigenvectors z,

zH*A=λ*zH for the left eigenvectors z,

My example:

A(2x2) = 2, -2, 1, 5

ippmEigenValuesVectorsLeft_m_64f gives λ1=3, λ2=4

and eigenvectors(2x2) = -0,89, 0.71, 0.44, -0.71

ippmEigenValuesVectorsRight_m_64f gives λ1=3, λ2=4

and eigenvectors(2x2) = -0,71, -0.44, -0.71, -0.89

The test of the definition fails. It seems that the result of ippmEigenValuesVectorsLeft_m_64f are the right eigenvectors. The result of ippmEigenValuesVectorsRight_m_64f I does not match do any defintion.

Example:

z1 = -0.89, 0.44

A*z1=-2.69, 1.34 and 3*z1=-2.69, 1.34 -> defintion of right eigenvectors but result of left eigenvectors

4 posts / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.

yes, at the first glance it looks like a bug. I would recommend you to try mkl's implementation of EigenSolvers. MKL's implementation much more stable (I mean eignesolvers only in that case ) and optimize for medium and big problems.

I tried LAPACKE_dgeev. It works mostly. But for example.A(2,2) = 1,2, -2, 5. gives two (same) eigenvalues 3,3., but only one eigenvector. Is this the correct behaviour?

Hi Steffen.

I've checked your issue with matlab. You are absolutely right, there is error in IPP func.

>> A=[2 -2 ;1 5]

A =

2    -2
1     5

>> [V D] = eig(A)

V =

-0.8944    0.7071
0.4472   -0.7071

D =

3     0
0     4

>> [VL D] = eig(A')

VL =

-0.7071   -0.4472
-0.7071   -0.8944

D =

3     0
0     4

>>

It looks like that IPP left and right vectors are just swapped. This issue wil be fixed in next release.