未使用的伪参数和未设置的函数的返回值

时间:2016-05-25 16:53:57

标签: fortran

这是我用于Newton-Raphson方法的Fortran 90程序。但是,它没有正确编译并在geany

中发出此警告
newraph.f90:18.17:
real function f(x)
                 1
Warning: Unused dummy argument 'x' at (1)
newraph.f90:18.15:
real function f(x)
               1
Warning: Return value of function 'f' at (1) not set
Compilation finished successfully.
        program newton_raphson
        implicit none
        real,parameter::error=1e-4
        integer::i
        real::xo,x1,f,fd
        read*,xo
        i=1
        10 x1=xo-(f(xo)/fd(xo))
        if(abs((x1-xo)/x1)<error) then
        print*,"root is", x1,"no. of iteration=",i
        else
        xo=x1
        i=i+1
        goto 10
        endif
        end

        real function f(x)
        real::x
        end

        real function fd(x)
        real::x
        fd=3*x**2-1
        end

1 个答案:

答案 0 :(得分:2)

你只有两个警告。两者都只是通知您函数f什么都不做:

    real function f(x)
    real::x
    end

更改它以返回有用的内容,警告将消失。

    real function f(x)
      real, intent(in)  :: x
      f = x**2
    end function

然后更改fd以返回f的衍生产品,例如fd = 2*x

除此之外,尝试使用一些不错的编程风格。使用缩进,尽可能使用循环而不是go to。使用垂直间距(空行)。另外,为了清晰起见,最好使用end functionend subroutineend program