zlange and Frobenius norm issue

zlange and Frobenius norm issue


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?


#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 / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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.

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/




end program dzlange

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


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.


Works great. Thanks!

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today