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,如果接口不符合,最好也使用模块来获取错误。