gpt4 book ai didi

c++ - 64 位和 32 位架构之间的 atan2 结果不一致

转载 作者:行者123 更新时间:2023-12-05 02:46:08 28 4
gpt4 key购买 nike

<分区>

当使用 std::atan2 时,我会得到不同的结果,这取决于我是否针对 32 位架构进行交叉编译,而不是针对( native )64 位进行编译。

$ cat test.cc 
#include <cmath>
#include <stdio.h>

int main(int argc, char **argv) {
printf("%f\n", std::atan2(366.470947f, -116.213623f));
}

$ gcc test.cc -o test -lm -ffp-contract=off -ffloat-store
$ ./test
1.877880
$ gcc -m32 test.cc -o test -lm -ffp-contract=off -ffloat-store
$ ./test
1.877881

我希望结果相同,因为我将应用程序移植到 64 位并且需要相同的浮点结果。如您所见,我已经尝试过 -ffp-contract=off -ffloat-store 我知道这会导致 float 不一致。还有什么我想念的吗?还是三角函数根本没有以这种方式标准化?

我正在运行带有 gcc 7.5.0 的 Ubuntu 18.04.2。 CPU 是 i7-1065G7。

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