function - 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....我的程序有什么问题?
解决方案
您的函数没有w1
通过隐式类型规则声明 so 的类型real
,而不是double precision
。正如我在评论中建议的那样,IMPLICIT NONE
如果接口不符合要求,请始终使用,并且最好还使用模块来获取错误。
推荐阅读
- android - 使用 RTL 语言的 Android XML 资源中的字符串属性
- excel - 如何在 Excel 数组公式中使用 INDIRECT?
- node.js - AWS JS SDK 不从环境变量加载凭证
- node.js - nodejs - 压力测试 zeromq 套接字
- git - 将补丁集从 Gerrit 拉入当前分支
- c# - WPF:当 FontStyle 为 Oblique 时,剪切文本块中最后一个字母的部分
- javascript - 价值保持不变
- mysql - 如何根据mysql中的user_id对列的值进行加减运算
- java - Jbehave ExamplesTable 数组/列表作为参数
- python - Python sort() 负值问题