zlange and Frobenius norm issue

zlange and Frobenius norm issue

Bild des Benutzers marcuscuda

Hi,

I'm getting an incorrect result when I use zlange to compute the Frobenius norm. dlange and clange work fine, as well as the one and infinity norms for zlange. Below illustrates the problem. For a 32-bit build I get a large random number and for a 64-bit build I get 0 for zlange. I'm using MKL 11.0 update 1 on Windows 8 64-bit.

Any idea what I'm doing wrong?

Thanks,
Marcus

#include "mkl.h"
#include <iostream>

MKL_Complex16 complex16(double r, double i=0){
MKL_Complex16 c = {r, i};
return c;
}

MKL_Complex8 complex8(float r, float i=0){
MKL_Complex8 c = {r, i};
return c;
}

int _tmain(int argc, _TCHAR* argv[])
{
int order = 3;
double* dwork = new double[9];
float* fwork = new float[9];
char f = 'f';

MKL_Complex16* c16 = new MKL_Complex16[9];
c16[0] = complex16(-1.1);
c16[1] = complex16( 0.0);
c16[2] = complex16(-4.4);
c16[3] = complex16(-2.2);
c16[4] = complex16( 1.1);
c16[5] = complex16( 5.5);
c16[6] = complex16(-3.3);
c16[7] = complex16( 2.2);
c16[8] = complex16( 6.6);

MKL_Complex8* c8 = new MKL_Complex8[9];
c8[0] = complex8(-1.1f);
c8[1] = complex8( 0.0f);
c8[2] = complex8(-4.4f);
c8[3] = complex8(-2.2f);
c8[4] = complex8( 1.1f);
c8[5] = complex8( 5.5f);
c8[6] = complex8(-3.3f);
c8[7] = complex8( 2.2f);
c8[8] = complex8( 6.6f);

double d[9] = {-1.1, 0.0, -4.4, -2.2, 1.1, 5.5, -3.3, 2.2, 6.6};

double c16norm = zlange(&f, &order, &order, c16, &order, dwork);
std::cout << c16norm <<std::endl;

float c8norm = clange(&f, &order, &order, c8, &order, fwork);
std::cout << c8norm <<std::endl;

double dnorm = dlange(&f, &order, &order, d, &order, dwork);
std::cout << dnorm <<std::endl;

return 0;
}

7 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.
Bild des Benutzers Gennady Fedorov (Intel)

marcus,
I see the same resuilts on my side. At the first glance this is the error. Thanks for report. we will check the cause of the problem.
--Gennady

Bild des Benutzers mecej4

Here is a shorter Fortran version that also shows up the ZLANGE bug. The program prints out a different result every time that it is run, when MKL Version 11 is used. There is no problem with MKL Version 10.3.12.

program dzlange

implicit none

complex*16 z(9)

real*8 zr(9),z16norm,wrk(9),zlange

integer :: m=9,n=1

data zr/-1.1d0,0.0d0,-4.4d0,-2.2d0,1.1d0,5.5d0,-3.3d0,2.2d0,6.6d0/

z=zr

z16norm=zlange('f',m,n,z,m,wrk)

write(*,*)z16norm

end program dzlange

Bild des Benutzers Gennady Fedorov (Intel)

Yes, That's right. Thanks a lot, mecej. The problem has already escalated.

Bild des Benutzers Gennady Fedorov (Intel)

Hello,

This issue has been fixed in MKL v.11.0 update 2 released yesterday.

You can download this update from intel registration center and check the problem on your side.

--Gennady

Bild des Benutzers marcuscuda

Works great. Thanks!

Bild des Benutzers Gennady Fedorov (Intel)

Ok, thanks for the update. the problem is closed. 

Melden Sie sich an, um einen Kommentar zu hinterlassen.