GAMMA的结果下降了它的类型

Bil*_*rim 2 fortran

我想用下面的程序计算gamma(-170.1):

program arithmetic  
! program to do a calculation  
real(8) :: x  
x = GAMMA(-170.1)  
print *, x  
end program  
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

test.f95:4.10:

x = GAMMA(-170.1)1错误:GAMMA的结果在(1)处下溢

当我用gfortran编译时.根据Maple gamma(-170.1)= 5.191963205*10 ^( - 172)我认为它应该在变量x的指数范围内,因为我已经定义了它.

jan*_*neb 5

您的程序的以下修改应该工作.请记住,在Fortran中,在分配给LHS之前评估RHS,并且浮点文字是默认类型,即单精度.因此,使GAMMA双参数的参数选择双精度GAMMA.


program arithmetic  
! program to do a calculation  
integer, parameter :: dp = kind(1.0d0)
real(dp) :: x  
x = GAMMA(-170.1_dp)  
print *, x  
end program