在Fortran中,DATA INF / 1.D + 300 /是什么意思?

时间:2010-02-23 18:17:19

标签: fortran

我正在将一些Fortran翻译成我们的C#应用​​程序,并且我试图找出Fortran在函数顶部的含义。

  DOUBLE PRECISION INF, DMIN, D12

  DATA INF/1.D+300/

INF的价值是什么?

4 个答案:

答案 0 :(得分:4)

The D means "× 10???",或者通常称为C#中e中的1.e+300,但它是双精度的。

DOUBLE PRECISION statement只定义了3个变量double

DATA statement

DATA X/Y/

转换为

X = Y;

在C#中。因此你得到

double INF = 1.e+300, DMIN, D12;

由于INF太大,我认为它意味着“无限”,在这种情况下,最好使用real IEEE infinitydouble INF = double.PositiveInfinity, ...)。

答案 1 :(得分:2)

代码声明一个名为INF的常量(即无穷大),其值为10 ^ 300。您可能希望替换double.PositiveInfinitydouble.MaxValue

答案 2 :(得分:2)

代码采用FORTRAN IV或FORTRAN 77的风格,而不是Fortran 90/95/2003。

Double Precision声明变量是常规real的精度的两倍。我不确定那个时代的FORTRAN标准对于这意味着什么非常精确,因为那时有更多种类的数字硬件。今天,它几乎总能获得8字节的真实。 Data语句初始化变量INF。在常量“1.D + 300”而不是E中使用“D”是旧FORTRAN指定常量是双精度。

获得最大正双倍的Fortran(> = 90)方法是:

INF = huge(1.0D + 0)

答案 3 :(得分:1)

该值为1.0e300,但我确信它的目的是将其设置为可在当前CPU上表示的最大double值。所以在C#中将是double.PositiveInfinity而不是一些硬编码的值。

相关问题