Начиная с http://www.netlib.org/blas/,, вы видите, что искомой подпрограммой является zgemv, здесь http://www.netlib.org/blas/zgemv.f --- это вектор сложной ('z') матрицы ('m') ( 'v') умножить.
Если ваши векторы являются просто обычными массивами, то есть они непрерывны в памяти, то аргументы INCX и INCY равны 1. Что касается параметра LDA, просто оставьте его равным размеру матрицы. Другие параметры просты. Например:
implicit none
integer, parameter :: N=2
complex*16, parameter :: imag1 = cmplx(0.d0, 1.d0)
complex*16 :: a(N,N), x(N), y(N)
complex*16 :: alpha, beta
a(:,:)=imag1;
x(:)=1.d0
y(:)=0.d0
alpha=1.d0; beta=0.d0
call zgemv('N',N,N,alpha,a,N,x,1,beta,y,1)
print*, y
end
В общем, каждый раз, когда мне нужна процедура BLAS или LAPACK, я просматриваю параметры в netlib.
РЕДАКТИРОВАТЬ: код выше не использует тот факт, что ваша матрица симметрична. Если вы хотите этого, то найдите подпрограмму zsymv
. (Спасибо @MRocklin.)