我想使用以下程序计算gamma(-170.1):
program arithmetic
! program to do a calculation
real(8) :: x
x = GAMMA(-170.1)
print *, x
end program
但是我收到了错误:
test.f95:4.10:
x = GAMMA(-170.1) 1 错误:GAMMA的结果在(1)
下溢
当我用gfortran编译时。根据Maple gamma(-170.1)= 5.191963205 * 10 ^( - 172)我认为应该在变量x的指数范围内,因为我已经定义了它。
答案 0 :(得分: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
答案 1 :(得分:1)
-170.0可被视为浮点数。如果是这样,将其更改为double应该可以解决问题。