GAMMA的结果下降了它的类型

时间:2011-01-18 18:15:02

标签: fortran

我想使用以下程序计算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的指数范围内,因为我已经定义了它。

2 个答案:

答案 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应该可以解决问题。