我正在用 Fortran 90 编写代码,现在我需要使用 *amos Fotran 77 库 ( http://www.netlib.org/amos/ ) 中的特殊功能。现在我找到了这些例程的模块接口(https://github.com/certik/fortran-utils/blob/master/src/amos.f90)。
我的问题是:如何将它们组合起来并在我的 Fortran 90 程序中使用它们以及如何正确编译它们?
我为此苦苦挣扎了一整天,仍然无法弄清楚。
以下是我的测试代码:
PROGRAM TEST_ZBESI
USE set_precisions
USE amos
IMPLICIT NONE
INTEGER :: n, i, nz, ierr
!double precision :: zr,zi, cyr(5), cyi(5)
REAL(kind=DBL) :: zr, zi, cyr(5), cyi(5)
n=5
zr=1.0_DBL
zi=2.0_DBL
call ZBESI(zr,zi,0.0_DBL,1,n,cyr,cyi,nz,ierr)
print *,' '
do i=1, n
write(*,10) i-1, cyr(i)
write(*,11) i-1, cyi(i)
end do
print *,' NZ=', NZ
print *,' Error code:', ierr
print *,' '
10 format(' zr(',I1,') = ',F10.6)
11 format(' zi(',I1,') = ',F10.6)
END PROGRAM TEST_ZBESI
我得到的结果如下:
zr(0) = 0.000000
zi(0) = 0.000000
zr(1) = 0.000000
zi(1) = 0.000000
zr(2) = 0.000000
zi(2) = 0.000000
zr(3) = 0.000000
zi(3) = 0.000000
zr(4) = 0.000000
zi(4) = 0.000000
NZ= 0
Error code: 4
无论如何,我似乎无法得到正确的答案。
我尝试手动将 ZBESI.f Fortran 77 代码转换为 Fortran 90 代码。但是代码太长了,简直是一场灾难。