# Complex matrix multiplication

## Complex matrix multiplication

I want to multiply two complex matrices AT*A (matrix A is 121x14) to fit data using least squares . I tried two ways: MATMUL and MKL ZGEMM function. But I obtained different results and even more different results than in MATLAB (I suppose MATLAB is correct because results of LSQ fit are correct).

The results are:

1           1
(3.684336847451464E-023,0.000000000000000E+000)  MATMUL
(3.684336847451464E-023,0.000000000000000E+000)  ZGEMM
(3.684336847451463E-023,0.000000000000000E+000)  MATLAB

1           2
(4.137865872950605E-015,-2.121231277807491E-032)  MATMUL
(4.137865872950604E-015,-2.121231277807491E-032)  ZGEMM
(4.137865872950604E-015,-1.232595164406710E-032)  MATLAB

1           3
(7.552654647536070E-032,-4.003325551299034E-033)  MATMUL
(7.554460206858933E-032,-4.021381144527664E-033)  ZGEMM
(7.555137291605429E-032,-4.012353347913349E-033)  MATLAB

element (1,3) is different in all 3 versions and difference is on the 3rd decimal place which is unacceptable for me.

I am attaching code (windows, Visual Fortran Compiler XE 13.1.0.149) used to produce these results.

What to do to improve precision of results?

3 posts / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.

I forgot to attach code

## Attachments:

AttachmentSize
31.66 KB

In two cases out of three, MATMUL and ZGEMM agree exactly or differ by just one unit in the last digit. Looked at impartially, that should weigh in favour of those being correct rather than MATLAB.

Also, you have the same 'precision' in all three cases (same number of digits), but its the 'accuracy' of those precise numbers that you are concerned about. The numbers exhibiting the biggest diffferences, in a percentage way (not absolute value way) are very small indeed. Why are you concerned about that, as your system would have to be very ill-conditioned, IMHO, to produce significantly different results as a result of such tiny differences?