我是一名富有的初学者,只是想尝试使用矩阵乘法。
program testlapack
implicit none
COMPLEX, DIMENSION(2, 2) :: A, B, Output
A = reshape((/ 4, 0, 0, 2 /), shape(A))
B = reshape((/ 6, 0, 0, 3 /), shape(B))
Output = reshape((/ 1, 0, 0, 1 /), shape(Output))
call DGEMM('n','n',2,2,2,1.0,A,2,B,2,0.0,Output,2)
Write(*,*) Output
end program testlapack
我期待一个简单的A * B乘法写入输出数组。相反,lapack返回一个只有零的2x2矩阵。使用ifort -llpack进行编译不会产生错误。
我的问题在哪里? 感谢
答案 0 :(得分:2)
我怀疑将复杂的参数传递给期望真实参数的子例程可能是导致问题的原因。也许您打算使用zgemm
而不是dgemm
?
答案 1 :(得分:0)
我将矩阵更改为REAL并使用了DGEMM。一旦我对进入DGEMM的每个数字使用双精度,它都有效,包括1.0设置为“ALPHA”。我没想到这是强制性的。