我正在尝试编译以下名为test_matrix.f
的测试程序:
PROGRAM test_matrix
IMPLICIT NONE
REAL*8 A(2,2), B(2,2), Bt(2,2), C(2,2)
REAL detA, detB, detC
REAL getdet
A(1,1) = 1
A(1,2) = 2
A(2,1) = 3
A(2,2) = 4
B(1,1) = 1
B(1,2) = 2
B(2,1) = 0
B(2,2) = 1
detA = getdet(A,2)
detB = getdet(B,2)
WRITE (*,*) detA
WRITE (*,*) detB
END PROGRAM
其中getdet
是用于计算方阵的行列式的标准外部子程序,如https://www.scribd.com/doc/46792210/FORTRAN77-Function-to-calculate-matrix-determinant中所述,存储在同一文件夹中的文件getdet.f
中。
当我尝试使用命令
编译程序时gfortran getdet.f test_matrix.f -o test_matrix.out
两个决定因素的输出是
0.00000000
0.00000000
这显然是错误的。但是,如果我在程序文件getdet.f
中添加行,以便每次从主程序getdet
调用程序test_matrix.f
时打印结果,那么我得到的就是
determinant is: -2.0000000000000000
determinant is: 1.0000000000000000
0.00000000
0.00000000
清楚地表明,无论子程序计算的是什么,都不会反馈到主程序test_matrix.f
。
我是否以错误的方式链接了这些程序? (一些谷歌搜索建议这是链接多个源代码文件的方法。)我该如何解决这个问题?提前全部谢谢。