不同的平台具有不同的FP能力,具有不同的参数和行为,因此它们产生的计算结果之间存在一定程度的差异,其在每个中间步骤上级联和放大。
我处于这样一种情况,即(仅限+-*/
)计算在每个不同的目标平台上使用不同的编译器供应商生成相同的结果是至关重要的,所以我想知道是否有标准的方法来做到这一点。我不是要求任意高精度浮点数,而是标准的64位IEEE double
,并且预计会遇到性能损失。
即使您有64位IEEE754 double
,也需要检查一些额外的东西。
std::sqrt
和c。)以返回尽可能最好的数字。 (如果您需要其他人,请确保IEEE754标准中提及您的所有操作,并且您的平台忠实地遵守 - 可能不遵守)。在您的特定情况下,似乎(1)就足够了(对于C ++)
static_assert(std::numeric_limits<double>::is_iec559, "IEEE 754 floating point required");