Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 如何知道机器相关常数_Fortran - Fatal编程技术网

Fortran 如何知道机器相关常数

Fortran 如何知道机器相关常数,fortran,Fortran,我使用的是64位WindowsVista 我需要编译一个Fortran文件,为此我需要编辑该文件以匹配我的机器的“机器相关常量” 在该文件中,我有以下信息。 任何建议都会大有帮助。 谢谢 C机器相关常数的解释 C C XINF=最大正机器编号 C XMAX1=beta**(p-1),其中beta是 C浮点系统,p是贝塔的基数 浮点有效位中的C位。这是一个 C非整数浮点数的上界,以及 C可接受负值下限的负值 C PSI的论点。如果需要四舍五入,请将其四舍五入 C值下降。 C XMIN1=可接受参数

我使用的是64位WindowsVista

我需要编译一个Fortran文件,为此我需要编辑该文件以匹配我的机器的“机器相关常量”

在该文件中,我有以下信息。 任何建议都会大有帮助。 谢谢

C机器相关常数的解释
C
C XINF=最大正机器编号
C XMAX1=beta**(p-1),其中beta是
C浮点系统,p是贝塔的基数
浮点有效位中的C位。这是一个
C非整数浮点数的上界,以及
C可接受负值下限的负值
C PSI的论点。如果需要四舍五入,请将其四舍五入
C值下降。
C XMIN1=可接受参数的最小值。我们
C建议XMIN1=最大值(1/XINF,xmin)四舍五入,其中
C xmin是最小的正浮点数。
C XSMALL=绝对参数,在该参数下,PI*COTAN(PI*X)可能为
C用1/X表示。我们建议使用XSMALL1。
C XLARGE=参数,超过该参数,PSI(X)可表示为
C对数(X)。方程的解
C x*ln(x)=β**p
C是一个安全值。
C
C一些重要机器的近似值如下:
C
Cβp eps xmin XINF
C
CDC 7600(标准普尔)2487.11E-15 3.13E-294 1.26E+322
C克雷-1(S.P.)2487.11E-154.58E-2467 5.45E+2465
C IEEE(IBM/XT,
C SUN等)(S.P.)2241.19E-07 1.18E-38 3.40E+38
C IEEE(IBM/XT,
C太阳等)(D.P.)2531.11D-162.23E-3081.79D+308
C IBM 3033(D.P.)16141.11D-165.40D-797.23D+75
C太阳3/160(D.P.)2531.11D-162.23D-3081.79D+308
C VAX 11/780(S.P.)2245.96E-08 2.94E-39 1.70E+38
C(D.P.)2561.39D-172.94D-391.70D+38
C(G格式)(D.P.)2531.11D-165.57D-3098.98D+307
C
C XMIN1 XMAX1 XSMALL XLARGE
C
C CDC 7600(标准普尔)3.13E-294 1.40E+14 4.64E-08 9.42E+12
C克雷-1(S.P.)1.84E-2466 1.40E+14 4.64E-08 9.42E+12
C IEEE(IBM/XT,
太阳等)1.18E-38 8.38E+06 1.90E-04 1.20E+06
C IEEE(IBM/XT,
太阳等)2.23D-308 4.50D+15 5.80D-09 2.71D+14
C IBM 3033(D.P.)1.39D-76 4.50D+15 5.80D-09 2.05D+15
C太阳3/160(D.P.)2.23D-308 4.50D+15 5.80D-09 2.71D+14
C VAX 11/780(S.P.)5.89E-39 8.38E+06 1.35E-04 1.20E+06
C(D.P.)5.89D-393.60D+162.05D-092.05D+15
C(G格式)(D.P.)1.12D-308 4.50D+15 5.80D-09 2.71D+14
C

你在我睡觉前抓到了我,所以我要简短地说一下(因为在这种状态下我无法写出合理的答案)。Fortran已经引入了许多用于确定系统相关常数的函数——拿一本书,或者一个互联网教程,查找诸如SELECTED_REAL_KIND,EPSILON(以及通常从那里得到的链接)之类的函数。

你在我睡觉前抓到了我,所以我将简短地说一下(因为在这种状态下我无法写出合理的答案)。Fortran已经引入了许多用于确定系统相关常数的函数——拿一本书,或者一个互联网教程,查找诸如SELECTED_REAL_KIND,EPSILON(以及通常从那里得到的链接)之类的函数。因此,我认为您应该很好地复制您显示的表中IEEE行的值。S.P.和D.P.指的是单精度和双精度,您可能需要在其他地方指定,并在表中选择相应的行。

现代Intel CPU使用IEEE兼容的浮点运算-似乎所有这些机器常量都与浮点值有关,而不是整数。因此,我认为您应该很好地复制您显示的表中IEEE行的值。S.P.和D.P.指单精度和双精度,您可能需要在其他地方指定,并在表中选择相应的行。

鉴于OP表中的低精度常数,过于保守的值不太可能对程序产生任何负面影响。也就是说,接近现实的数字可能足够好了。谢谢DaveP和wallyk。考虑到OP表中的低精度常数,过于保守的值不太可能对程序产生任何负面影响。也就是说,接近现实的数字可能足够好了。谢谢DaveP和wallyk。我会试试的。谢谢你的指导,鲁克。谢谢你的指导,鲁克。
C Explanation of machine-dependent constants
C
C   XINF   = largest positive machine number
C   XMAX1  = beta ** (p-1), where beta is the radix for the
C            floating-point system, and p is the number of base-beta
C            digits in the floating-point significand.  This is an
C            upper bound on non-integral floating-point numbers, and
C            the negative of the lower bound on acceptable negative
C            arguments for PSI.  If rounding is necessary, round this
C            value down.
C   XMIN1  = the smallest in magnitude acceptable argument.  We
C            recommend XMIN1 = MAX(1/XINF,xmin) rounded up, where
C            xmin is the smallest positive floating-point number.
C   XSMALL = absolute argument below which  PI*COTAN(PI*X)  may be
C            represented by 1/X.  We recommend XSMALL < sqrt(3 eps)/pi,
C            where eps is the smallest positive number such that
C            1+eps > 1. 
C   XLARGE = argument beyond which PSI(X) may be represented by
C            LOG(X).  The solution to the equation
C               x*ln(x) = beta ** p
C            is a safe value.
C
C     Approximate values for some important machines are
C
C                        beta  p     eps     xmin       XINF  
C
C  CDC 7600      (S.P.)    2  48  7.11E-15  3.13E-294  1.26E+322
C  CRAY-1        (S.P.)    2  48  7.11E-15  4.58E-2467 5.45E+2465
C  IEEE (IBM/XT,
C    SUN, etc.)  (S.P.)    2  24  1.19E-07  1.18E-38   3.40E+38
C  IEEE (IBM/XT,
C    SUN, etc.)  (D.P.)    2  53  1.11D-16  2.23E-308  1.79D+308
C  IBM 3033      (D.P.)   16  14  1.11D-16  5.40D-79   7.23D+75
C  SUN 3/160     (D.P.)    2  53  1.11D-16  2.23D-308  1.79D+308
C  VAX 11/780    (S.P.)    2  24  5.96E-08  2.94E-39   1.70E+38
C                (D.P.)    2  56  1.39D-17  2.94D-39   1.70D+38
C   (G Format)   (D.P.)    2  53  1.11D-16  5.57D-309  8.98D+307
C
C                         XMIN1      XMAX1     XSMALL    XLARGE
C
C  CDC 7600      (S.P.)  3.13E-294  1.40E+14  4.64E-08  9.42E+12
C  CRAY-1        (S.P.)  1.84E-2466 1.40E+14  4.64E-08  9.42E+12
C  IEEE (IBM/XT,
C    SUN, etc.)  (S.P.)  1.18E-38   8.38E+06  1.90E-04  1.20E+06
C  IEEE (IBM/XT,
C    SUN, etc.)  (D.P.)  2.23D-308  4.50D+15  5.80D-09  2.71D+14
C  IBM 3033      (D.P.)  1.39D-76   4.50D+15  5.80D-09  2.05D+15
C  SUN 3/160     (D.P.)  2.23D-308  4.50D+15  5.80D-09  2.71D+14
C  VAX 11/780    (S.P.)  5.89E-39   8.38E+06  1.35E-04  1.20E+06
C                (D.P.)  5.89D-39   3.60D+16  2.05D-09  2.05D+15
C   (G Format)   (D.P.)  1.12D-308  4.50D+15  5.80D-09  2.71D+14
C