Skip to main content

Posts

Showing posts from July, 2015

General Matrix inversion by MKL in C++.

Here is a example of complex matrix inversion code by using MKL. #include #include #define MKL_Complex16 std:: complex < double > #include "mkl.h" using namespace std; void inverse( complex < double >* A, int N) {     int *IPIV = new int [N+ 1 ];     int LWORK = N*N;     complex < double > *WORK = new complex < double >[LWORK];     int INFO;    zgetrf_(&N,&N,A,&N,IPIV,&INFO);    zgetri_(&N,A,&N,IPIV,WORK,&LWORK,&INFO);     delete IPIV;     delete WORK; } int main() {     int n= 2 ;     complex < double > * A = new complex < double > [n*n];    A[ 0 ]= complex < double >( 1. , 2. );    A[ 1 ]= complex < double >( 3. , 4. );    A[ 2 ]= complex < double >( 5. , 6. );    A[ 3 ]= complex < double >( 7. , 8. );    inverse(A,n);     for ( int i= 0 ;i< 4 ;i++)        cout<     return 0 ; } Output is: (-0.5,0.4375) (0.25,-0.18