Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Kamil_K_
Beginner
53 Views

EigenValuesVectors - two matrices/complex values

Hello,

I really need to implement into C++ code calculation of EigenValues and EigenVectors using same algorithm as Matlab function:

    [V,D] = eig(A,B) produces a diagonal matrix D of generalized
    eigenvalues and a full matrix V whose columns are the corresponding
    eigenvectors so that A*V = B*V*D.

First of all, when I check at available constructors at Intel IPP documentation: https://software.intel.com/en-us/node/505270 I can't find any constructor that makes usage of complex numbers (I am interested in Ipp64fc).

Furthermore all constructors take only one matrix as an argument. Do you have any idea how can I get similar effect to Matlab eig(A,B) with usage of Intel IPP?

I am using Intel IPP 7.1.

 

 

0 Kudos
4 Replies
Jonghak_K_Intel
Employee
53 Views

Hi Kamil,

 

 Please refer this function and the example here https://software.intel.com/en-us/node/505271 for the imaginary part.

I'm afraid that IPP doesn't have an implementation to perform   [V,D] = eig(A,B) when A*V = B*V*D.

 

Thank you

Igor_A_Intel
Employee
53 Views

Hi Kamil,

IPP has stopped support for ippMX domain in IPP 9.0 version. Have a look at MKL library, please.

regards, Igor.

Kamil_K_
Beginner
53 Views

Thanks for answers. As you said I've resigned from using IPP in this matter and tried to switch to MKL. But still I can't find what I am looking for.

I have a Composer XE2013. And try to find eigen solver that will allow me to calculate generalized eigenvalues/eigenvectors and move eig(A,B) from Matlab to C++. I've tried to check all those algorithms from lapack95 lib but it seems all of them are using only one matrix.

https://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_lapack_examples/index.h...

 All of those solves:

A*v(j) = lambda(j)*v(j)

Somewhere on mathworks I found this thread:

http://jp.mathworks.com/matlabcentral/answers/40050-generalized-eigenvalue-and-eigenvectors-differen...

So it seems like someone succeeded in implementing partially what I need (but I want to use it for 4x4 matrices, not so large ones). But person in this topic wrote that he/she used "dsygv" algorithm but I can't find anything like that on the web.

Is there any option in MKL to do it for complex numbers?

   [V,D] = eig(A,B) produces a diagonal matrix D of generalized
    eigenvalues and a full matrix V whose columns are the corresponding
    eigenvectors so that A*V = B*V*D.

53 Views

Hi Kamil,

Try using ?GGEV from MKL. CGGEV supports single complex, and ZGGEV - double complex.

Best regards,
Alexander
 

Reply