首页 > 解决方案 > 如何使用返回 REAL 的 fortran95 函数修复“return-type”和“no IMPLICIT type”错误

问题描述

我还是 fortran95 的新手,我想知道是否有人可以向我解释为什么我会收到这些错误:

“错误:函数 'w' 在 (1) 的返回类型不匹配 (UNKNOWN/REAL(4))”
“错误:函数 'w' 在 (1) 没有隐式类型”

起初我意识到我犯了一个错误,将 W() 中的 z 设为整数而不是实数,但错误仍然存​​在。任何建议都会很有帮助。

我使用“gfortran -o spread spread.f95 -Wall”编译代码,并且使用 GNU Fortran (Spack GCC) 10.2.0 进行编译。

function W(z) result(ret)
    implicit none
    real, intent(in) :: z
    real :: ret, x
    integer :: i

    x = 0.5

    do i = 1, 10
        x = x - ((x * EXP(x) - z)/ (EXP(x) + (x * EXP(x))))
    end do

    ret = x

end function

program spread
    implicit none
    real :: alpha, gamma, numInfected
    real :: z
    integer :: n
    integer :: r

    do
        read(*,*,IOSTAT = r) n, alpha
        if(r > 0) then
            print *, "Error in input!"
        else if(r < 0) then
            exit
        else
            z = -alpha * EXP(-alpha)
            gamma = 1 + W(z) / alpha
            numInfected = gamma * n
        end if       
    end do

end program spread

标签: debuggingfortrangfortrantype-mismatchfortran95

解决方案


推荐阅读