0

h = g(f(x)) を計算する単純な Fortran コードを作成しようとしています。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を参照してください。

引数としてのプロシージャについても、この質問を確認してください。

于 2012-09-08T15:55:55.440 に答える