对于我正在处理的项目,我用 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)
你能帮我找出这种差异的来源吗?
我是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代码转换为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.
你们能帮助我找到这种差异的来源,因为对我的工作来说,确保精确度非常重要