【发布时间】:2014-01-19 03:08:38
【问题描述】:
我目前正在查看code which does multi-precision floating-point arithmetic。为了正常工作,该代码需要在明确定义的点处将值减少到它们的最终精度。因此,即使将中间结果计算到 80 bit extended precision 浮点寄存器,在某些时候它也必须舍入到 64 bit double 以进行后续操作。
代码使用宏INEXACT来描述这个需求,但没有完美的定义。 gcc manual 提到 -fexcess-precision=standard 作为强制转换和赋值操作定义明确精度的一种方式。但是,它也写道:
'-fexcess-precision=standard' 未针对 C 以外的语言实现
现在我正在考虑将这些想法移植到 C++(如果有人知道现有实现,欢迎 cmets)。所以看来我不能将该开关用于 C++。 但是在没有任何开关的情况下,g++ 的默认行为是什么?是否有更多类似 C++ 的方法来控制超精度的处理?
我想对于我当前的用例,无论如何我都可能使用-mfpmath=sse,据我所知,这不会导致任何过度的精度。但我还是很好奇。
【问题讨论】:
标签: c++ gcc floating-point floating-point-precision extended-precision