首页 > 解决方案 > 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 Spectrum Analytic.f Spectrum.f 编译此程序后

我只得到 0.0000000000 而不是 25....我的程序有什么问题?

标签: functionfortrangfortran

解决方案


您的函数没有w1通过隐式类型规则声明 so 的类型real,而不是double precision。正如我在评论中建议的那样,IMPLICIT NONE如果接口不符合要求,请始终使用,并且最好还使用模块来获取错误。


推荐阅读