0

我正在尝试编写一个简单的 Fortran 代码来计算 h = g(f(x))。x 是长度=2 的向量。

module m1
implicit none
contains

function f(x)
implicit none
real::f(2),x(2)
f(1)=x(1)-x(2)
f(2)=exp(x(1))-x(2)**2
end function f

function g(ff)
implicit none
real::g(2),x1(2),ffreslt(2)
interface
    function ff(x)
    implicit none
    real::x(2),ff(2)
    end function ff
end interface
ffreslt=ff(x1)
g(1)=1-ffreslt(1)
g(2)=2*ffreslt(1)**2-3*ffreslt(2)+4.2
end function g

end module m1

program hgf
use m1
implicit none
real::x1(2),h(2)
x1 = (/0.55,2.47/)
h = g(f(x1))

write(*,*) h

end program hgf

但是,我收到此错误消息:

h = g(f(x1))
      1
Error: Actual parameter 'ff' at <1> is not a PROCEDURE

我错过了什么吗?谢谢。

4

1 回答 1

5

在对 g() 的调用中,您没有传递函数 f(),而是使用 x1 的值调用函数 f() 的结果。

请查看有关从 F77 转换为 F90 的说明并查看第 24 页,第 3.2.7 节。

还要检查 this question on procedure as arguments

于 2012-09-08T15:55:55.440 回答