If I multiply two complex diagonal 2x2 matrices, with chemm(), I don't get a diagonal matrix !

Here is the code for C=A.B

Matrix A is stored as an upper triangle hermitian matrix.

#include <cstdlib>

#include <iostream>

#include <cstdio>

#include <complex>

#include <math.h>

#define MKL_Complex8 std::complex<float>

#define MKL_INT int

#include "mkl.h"

using namespace std;

typedef std::complex<float> Comp ;

int main(int argc, char** argv)

{

CBLAS_ORDER order= CblasColMajor;

CBLAS_SIDE Left = CblasLeft;

CBLAS_UPLO Uplo= CblasUpper;

Comp one=1; Comp zero =0;

Comp A[3];

Comp B[4];

Comp C[4];

A[0]=1.0;A[1]=0;A[2]=1.0;

B[0]=2.0;B[1]=0;B[2]=2.0;B[3]=0;

cblas_chemm ( order, Left, Uplo, 2, 2, &one, A, 2, B, 2, &zero, C, 2); //C=A.B

for (int i=0;i<2;i++)

{

for (int j=0;j<2;j++)

cout<<C[i+2*j]<<" ";

cout<<endl;

}

}