我想用下面的程序计算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的指数范围内,因为我已经定义了它.
您的程序的以下修改应该工作.请记住,在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