The following code produces different outputs for DZGEMV and GEMV. The code is built with default 64-bit integer and real numbers; The parallel version of the MKL library is used (using ILP64 interfaces).
The path to the module files is: C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.3.203\windows\mkl\include\intel64\ilp64
Using the link advisor, the libraries used are: mkl_blas95_ilp64.lib mkl_lapack95_ilp64.lib mkl_intel_ilp64_dll.lib mkl_intel_thread_dll.lib mkl_core_dll.lib libiomp5md.lib (library directory: C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.3.203\windows\mkl\lib\intel64_win).
GEMV and MATMUL produce the expected result. I can't explain what DZGEMV does here.
This is on a WIN 10 machine, with Intel Parallel Studio XE 2019 Update 3 Cluster Edition.
PROGRAM P USE BLAS95 IMPLICIT NONE COMPLEX :: PHI(2,1),V(2),W(1),ALPHA,BETA INTEGER :: M,N,ONE PHI = CMPLX(1.0) V = CMPLX(2.0) ALPHA = CMPLX(1.0) BETA = CMPLX(0.0) W = CMPLX(0.0) M = 2 N = 1 ONE = 1 CALL DZGEMV('C',M,N,ALPHA,PHI,M,V,ONE,BETA,W,ONE) WRITE(*,*) W CALL GEMV(PHI,V,W,ALPHA=ALPHA,BETA=BETA,TRANS='C') WRITE(*,*) W W = MATMUL(CONJG(TRANSPOSE(PHI)),V) WRITE(*,*) W END PROGRAM P
Output:
(2.00000000000000,0.000000000000000E+000) (4.00000000000000,0.000000000000000E+000) (4.00000000000000,0.000000000000000E+000) Press any key to continue . . .