fortran中的LAPACK / BLAS矩阵乘法返回零

时间:2013-05-17 13:31:10

标签: fortran90 lapack

我是一名富有的初学者,只是想尝试使用矩阵乘法。

    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进行编译不会产生错误。

我的问题在哪里? 感谢

2 个答案:

答案 0 :(得分:2)

我怀疑将复杂的参数传递给期望真实参数的子例程可能是导致问题的原因。也许您打算使用zgemm而不是dgemm

答案 1 :(得分:0)

我将矩阵更改为REAL并使用了DGEMM。一旦我对进入DGEMM的每个数字使用双精度,它都有效,包括1.0设置为“ALPHA”。我没想到这是强制性的。