Tag: 叮叮

是否有文档描述Clang如何处理过多的浮点精度?

当允许使用的唯一的浮点指令是387时,几乎不可能(*)以合理的成本提供严格的IEEE 754语义。 当希望保持FPU工作在完整的64位有效位上时,这是特别困难的,所以long double精度型可用于扩展精度。 通常的“解决scheme”是以唯一可用的精度进行中间计算,并在或多或less明确定义的情况下将其转换为较低的精度。 最近的GCC版本根据Joseph S. Myers在2008年发布的GCC邮件列表中的解释,处理了中间计算中的超额精度。 就我所知,这个描述使得一个程序编译成gcc -std=c99 -mno-sse2 -mfpmath=387完全可以预测的。 如果偶然的话,它不是,这是一个错误,它将是固定的:Joseph S. Myers在他的文章中表示的意图是使其可预测。 是否logging了Clang如何处理过度的精度(比如使用选项-mno-sse2 )以及在哪里? (*)编辑:这是一个夸张。 当允许将x87 FPUconfiguration为使用53位有效位时,它会稍微令人烦恼,但是仿真二进制64 并不困难 。 在下面的R ..的评论之后,下面是我和Clang最近版本的简短交互的日志: Hexa:~ $ clang -v Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) Target: x86_64-apple-darwin12.4.0 Thread model: posix Hexa:~ $ cat fem.c #include <stdio.h> #include <math.h> #include <float.h> #include <fenv.h> double […]