fortran 中的函数
Functions in fortran
我完全不熟悉 Fortran 编程......我试图制作一个函数,该函数在另一个程序中调用....
所以我有了我的主程序,叫做 Spectrum.f:
program Spectrum
external I_Analytic
double precision I_Analytic
write(*,*) I_Analytic(5.D0)
end
函数 I_Analytic 在第二个文档中定义,名为 Analytic.f:
DOUBLE PRECISION function I_Analytic(w1)
I_Analytic = w1**2
end function I_Analytic
编译此程序后
gfortran -o 频谱 Analytic.f Spectrum.f
我只得到 0.0000000000 而不是 25....我的程序有什么问题?
您的函数没有声明 w1
的类型,因此根据隐式类型规则,它是 real
,而不是 double precision
。正如我在评论中建议的那样,始终使用 IMPLICIT NONE
,如果接口不符合,最好也使用模块来获取错误。
我完全不熟悉 Fortran 编程......我试图制作一个函数,该函数在另一个程序中调用....
所以我有了我的主程序,叫做 Spectrum.f:
program Spectrum
external I_Analytic
double precision I_Analytic
write(*,*) I_Analytic(5.D0)
end
函数 I_Analytic 在第二个文档中定义,名为 Analytic.f:
DOUBLE PRECISION function I_Analytic(w1)
I_Analytic = w1**2
end function I_Analytic
编译此程序后 gfortran -o 频谱 Analytic.f Spectrum.f
我只得到 0.0000000000 而不是 25....我的程序有什么问题?
您的函数没有声明 w1
的类型,因此根据隐式类型规则,它是 real
,而不是 double precision
。正如我在评论中建议的那样,始终使用 IMPLICIT NONE
,如果接口不符合,最好也使用模块来获取错误。