小编EL *_*ine的帖子

C++ 和 Fortran 中的不同精度

对于我正在处理的项目,我用 C++ 编写了一个非常简单的函数:

Fne(x) = 0.124*x*x,问题是当我计算函数的值时

对于x = 3.8938458092314270Fortran 77 和 C++ 语言,我得到了不同的精确度。

对于 Fortran,我得到了,Fne(x) = 1.8800923323458316而对于 C++,我得到了Fne(x) = 1.8800923630725743. 对于这两种语言,Fne 函数都针对双精度值进行编码,并且还返回双精度值。

C++代码:

double FNe(double X) {
    double FNe_out;
    FNe_out = 0.124*pow(X,2.0);
    return FNe_out;
}
Run Code Online (Sandbox Code Playgroud)

Fortran 代码:

  real*8 function FNe(X)
  implicit real*8 (a-h,o-z)
  FNe = 0.124*X*X
  return
  end
Run Code Online (Sandbox Code Playgroud)

你能帮我找出这种差异的来源吗?

c++ double fortran fortran77

4
推荐指数
1
解决办法
1018
查看次数

1的不可分类语句,语句标签中的非数字字符为1

我是Fortran的新手,我想用一个real*8名为的函数编写测试程序NeQuick,所以我编写了以下程序:

program test

implicit real*8 (a-h,o-z)


aNe=NeQuick(400.0D0,45.0D0,15.0D0,10,1.929D2,15.0D0)
write(6,'(A,E12.5,A)')
& ' NeQuick electron density =',aNE,' m^-3'

call sleep(10)
end program
Run Code Online (Sandbox Code Playgroud)

在编译它的最后,我在小程序的每一行中都有以下错误:1中的语句标签中的非数字字符或1处的-Unclassifiable语句

你们能解释一下我的节目有什么问题吗?

fortran fortran77

0
推荐指数
1
解决办法
336
查看次数

双精度值的精度错误

我需要将Fortran代码转换为C++代码,我有以下问题:

我正在尝试计算一个R12用Fortran 77和C++语言命名的double值,但是我获得了两个彼此非常接近的值但具有两个不同的精度.这是我的Fortran代码:

R12 = sqrt(95699.68D0+1123.6D0*flx) - 408.99D0
Run Code Online (Sandbox Code Playgroud)

double flx = 192.9D0.我获得的价值是R12 = 149.97522253177789

我用C++做同样的事情:

R12 = sqrt(95699.68+1123.6*flx) - 408.99 ; 
Run Code Online (Sandbox Code Playgroud)

我在这里获得的价值是R12 = 149.97522253177794.

你们能帮助我找到这种差异的来源,因为对我的工作来说,确保精确度非常重要

c++ double fortran fortran77

0
推荐指数
1
解决办法
178
查看次数

标签 统计

fortran ×3

fortran77 ×3

c++ ×2

double ×2