如何重现这个行为?
https://isocpp.org/wiki/faq/newbie#floating-point-arith2
准确地说,在以下代码中,参数
一些编译器选项?循环?有什么想法吗?
x
和y
是相等的;它们可以等于1.0或任何其他值。void foo(double x, double y)
{
double cos_x = cos(x);
double cos_y = cos(y);
// the behavior might depend on what's in here
if (cos_x != cos_y) {
std::cout << "Huh?!?\n"; // You might end up here when x == y!!
}
}
一些编译器选项?循环?有什么想法吗?
// 当 x == y 时,你可能会到达这里!!
- NathanOliver/ arch:IA32
来强制生成旧FPU的带有80位格式的代码。只有这样理论上才能实现,但你需要进行大量的调试才能复制它(或者编写足够重要的代码以调用墨菲定律)。 - anatolyg