后缀 'd+0' 在 Fortran 实数表达式中

发布于 2024-07-22 06:20:45 字数 876 浏览 9 评论 0原文

有谁知道下面 M1、M2 和 M4 作业中后缀“d+0”的含义,或者网络上或书籍上是否有任何资源很可能找到此信息?


      subroutine plot( t, x, p, q, nga, nt, wron, 
     &                 ngq, gq, ngaq1, ngaq2, gaq, rwh, iwh )
        implicit none

        integer*4 nga, nt, ngq, ngaq1, ngaq2, iwh(*)

        real*8 t, x(*), p(*), q(*), wron(nga,*),
     &         gq(ngq,*), gaq(ngaq1,ngaq2,*), rwh(*)

        real*8 M1, M2, M3, M4, mr, mst, h3, Tc
        integer*8 iflag

c       DISCRETIZE1( Tc, rwh, iwh )

        M1 = 0.1362d+0
        M2 = 0.09806d+0
        M3 = M1 + M2
        M4 = 0.236d+0

        mr = M1*x(1) + M2*x(2) + M3*x(3) + M4*x(4)
        mst =  M1*q(1) + M2*q(2) + M4*q(3)

        call mess3( t, x, h3, p, q, rwh, iwh, iflag )

        write (10,100) t, x(1), x(2), x(3), x(4), Tc, h3, mr-mst
100     format( e20.10, 7(1x,e20.10) ) 

  end

Does anyone knwow what the postfix "d+0" means in the assignments to M1, M2 and M4 below or is there any resource on the web or a book where one is very likely to find this information?


      subroutine plot( t, x, p, q, nga, nt, wron, 
     &                 ngq, gq, ngaq1, ngaq2, gaq, rwh, iwh )
        implicit none

        integer*4 nga, nt, ngq, ngaq1, ngaq2, iwh(*)

        real*8 t, x(*), p(*), q(*), wron(nga,*),
     &         gq(ngq,*), gaq(ngaq1,ngaq2,*), rwh(*)

        real*8 M1, M2, M3, M4, mr, mst, h3, Tc
        integer*8 iflag

c       DISCRETIZE1( Tc, rwh, iwh )

        M1 = 0.1362d+0
        M2 = 0.09806d+0
        M3 = M1 + M2
        M4 = 0.236d+0

        mr = M1*x(1) + M2*x(2) + M3*x(3) + M4*x(4)
        mst =  M1*q(1) + M2*q(2) + M4*q(3)

        call mess3( t, x, h3, p, q, rwh, iwh, iflag )

        write (10,100) t, x(1), x(2), x(3), x(4), Tc, h3, mr-mst
100     format( e20.10, 7(1x,e20.10) ) 

  end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吻泪 2024-07-29 06:20:45

它的意思是“双精度”,+0 表示 10 的零次方(零是指数)。

这是我能找到的第一个参考的引用:

计算机中存储的数字是
幅度和精度有限。
限制取决于具体情况
电脑。 因此,实数只有
一定数量的重要
数字。 如果有更多有效数字
需要进行计算,那么
必须使用双精度数字。
写入双精度常量
与 a 具有相同的指数形式
单精度 REAL 常数,除了
用 D 而不是 E 分隔
指数的尾数。

这是来自更好参考的引用, www.fortran .com,特别是 F77 标准。

4.5.2 双精度常数。

双精度的形式
常量为:

  1. 基本实常数
    后跟双精度
    指数
  2. 整数常量,后跟
    双精度指数

价值
双精度常数的值是
前面的常数的乘积
D 和 10 的幂表示
由 D 后面的整数组成。
形式(2)的整数常量部分可以
写的数字多于一个
处理器将使用来近似
常数的值。

It means "double precision" and the +0 means 10 to the zeroth power (zero is the exponent).

Here's a quote from first reference I could find:

A number stored in a computer is
limited in magnitude and precision.
The limits depend on the particular
computer. Thus, a REAL number has only
a certain number of significant
digits. If more significant digits are
required for a calculation, then
DOUBLE PRECISION numbers must be used.
A DOUBLE PRECISION constant is written
in the same exponential form as a
single precision REAL constant except
with a D instead of an E separating
the mantissa from the exponent.

And here is a quote from a better reference, www.fortran.com, specifically the F77 standard.

4.5.2 Double Precision Constant.

The forms of a double precision
constant are:

  1. Basic real constant
    followed by a double precision
    exponent
  2. Integer constant followed by
    a double precision exponent

The value
of a double precision constant is the
product of the constant that precedes
the D and the power of ten indicated
by the integer following the D. The
integer constant part of form (2) may
be written with more digits than a
processor will use to approximate the
value of the constant.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文