zlange and Frobenius norm issue

zlange and Frobenius norm issue

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 posts / novo 0
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.

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

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

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

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

Works great. Thanks!

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

Deixar um comentário

Faça login para adicionar um comentário. Não é membro? Inscreva-se hoje mesmo!