gpt4 book ai didi

c++ - 头文件中的函数

转载 作者:行者123 更新时间:2023-11-28 05:55:28 26 4
gpt4 key购买 nike

我在 C 头文件中定义了一个函数,其中 m_parameters[] 数组在别处定义(只是一个数字列表):

inline double Par3D::getValue(const double& x, const double& t ) const {
double g1 = m_parameters[3] + m_parameters[4]*TMath::ATan(m_parameters[5]*(t-0.3)) ;
double g0 = m_parameters[0] + m_parameters[1]*TMath::ATan(m_parameters[2]*(t-0.3)) ;
return g0 + g1*TMath::ATan(m_parameters[6]*(x-0.3)) ;
}

此函数在较大的程序中被重复调用。如果我只是将 g0 和 g1 的表达式直接放在返回的参数中,我会得到不同的结果。这是可以预料的吗?

非常感谢。

最佳答案

这是意料之中的事情。 C++ 标准赋予编译器以各种方式进行优化的自由,其中之一是使用 CPU 中的浮点寄存器来存储中间结果,而不是使用实际的随机存取存储器写回 double 值。在某些硬件上,写回 double 的过程需要舍入。例如,现代 Intel CPU 有 80 位浮点寄存器,但 double 在内存中以 64 位表示。所以 - 较早舍入可能会导致不同的结果。

FWIW(不多)- 如果您启用优化,您可能会发现一个寄存器被一致使用,而如果没有优化,编译器可能会天真地遵循您的代码并舍入到内存中的变量,如局部变量的使用。

关于c++ - 头文件中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com