2

我是一个 fortran 初学者,只是想尝试一下是否可以使用矩阵乘法。

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

我的问题在哪里?谢谢

4

2 回答 2

2

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

于 2013-05-17T15:22:23.233 回答
1

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

于 2013-05-21T08:53:37.973 回答