fortran90 - 在 fortran 90 中打印函数名称

标签 fortran90 numerical-methods

我编写了一个代码,用于查找在参数中提供名称的函数的根,我想我是从 Numerical Recipes 中获取的。就像是

double 函数 rtsafe(x_init, x1, x2, xacc, func, dfunc)

其中 func 和 dfunc 是两个函数的名称。
当然,我将 rtsafe 与不同的函数 func 和 dfunc 一起使用。
当我在 rtsafe 中时,我想打印被调用函数 func 和 dfunc 的名称,因为当 rtsafe 中出现错误时,我想知道我使用的是哪个函数。就像是

write(,)"my func = ", func

(?)

有人知道怎么做吗?

最佳答案

您可以在返回函数名称的函数中添加一个可选参数:

    FUNCTION f(x, fname) RESULT (fx)
      IMPLICIT NONE
      REAL                        :: x, fx
      CHARACTER(LEN=*), OPTIONAL  :: fname
      CHARACTER(LEN=*), PARAMETER :: myfname='somename'

      IF (present(fname)) fname=myfname

      fx = x   ! or whatever else

    END FUNCTION f

在 rtsafe 中对您的函数的第一次调用中,您将获得该函数的名称,以便以后出现错误时进行打印。

没有测试这个,但它应该或多或少像这样工作,这是我能想到的在 Fortran 中做到这一点的唯一方法。

关于fortran90 - 在 fortran 90 中打印函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870959/

相关文章:

c - 尝试写入文件时的文件分段

floating-point - 求解二次方程的数值稳定方法

复数的 Fortran 格式说明符

将简单的 C 代码转换为 CUDA 代码

fortran - 使用 openmp 和可分配数组在 fortran 中循环

fortran - 在 Fortran 中读取行数未知的文件

python - 有没有办法根据某些 bool 值在逻辑运算符之间进行交换?

algorithm - (数值)计算两个长方体的相交体积

fortran - 能否将一个值从一个 Fortran 程序传递到另一个 Fortran 程序?

c - F90读取C数据文件