function - 在Fortran中将多个变量的外部函数作为一个变量的函数传递

标签 function fortran

我正在尝试使用 QUADPACK 中的例程进行数值积分。例程期望函数以 REAL,EXTERNAL 的形式传递。 ,所以我没有使用指针或其他任何东西的自由。

是否可以给函数起别名 f(x,a,b,...)作为函数f(x)对于只需要 x 函数的例程?很像在 MATLAB 中完成的事情。与 @(x)f(x,a,b,...) .

最佳答案

您不能直接在 Fortran 中使用函数进行类似的技巧。您也不能在 Fortran 中返回闭包。只需编写一个包装器。

function wrap_f(x) result(res)
  ...
  res = f(a,b,...)
end function

它可以是内部函数或模块函数并获取 ab由主机协会或它可以使用包含 a 的模块和 b .

如果您想将函数作为实际参数传递,它不能是 Fortran 2003 之前的内部过程,而只能在 Fortran 2008 中。但它适用于最新版本的 gfortran 和 ifort。为了更好的可移植性,请使用模块。

关于function - 在Fortran中将多个变量的外部函数作为一个变量的函数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127313/

相关文章:

c++ - 如何将 C++17 stdc++fs 库链接到混合语言(C++ 和 Fortran)CMake 项目?

python - 为什么这个函数的 __dict__ 属性是一个空字典?

visual-studio-2010 - Fortran 90 模块的神秘本质

python - f2py:模块中常量的奇怪行为

c++ - 当调用改变它的成员函数时,c对象成员没有被改变

python - 使用 F2PY 在 numpy 数组上使用 Fortran 函数时结果不一致

fortran - Fortran中的数组运算

python - 分别循环遍历数据框的每一列

c++ - 我刚刚了解了 C++ 函数;我可以在函数返回值上使用 if 语句吗?

function - Hive hour()函数返回NULL