【发布时间】:2016-01-09 19:40:56
【问题描述】:
我使用 c++ 来计算各种类型的特殊函数(例如 Lambert 函数、求值求逆的迭代方法等)。在许多情况下,直接使用尾数和指数显然有更好的方法。
我找到了很多如何提取尾数和指数部分的答案,但是所有这些都只是“计算速度不是很有效的学术案例”,对我来说有点没用(我使用尾数和指数操作的动机在于提高计算速度)。有时我需要调用一些特定的函数大约十亿次(非常昂贵的计算),所以每次保存的计算工作都很好。并且使用将尾数作为双精度返回的“freexp”不是很合适。
我的问题是(针对具有 IEEE 754 浮点的 c++ 编译器):
1) 如何读取 float/double 尾数的特定位?
2) 如何将整个尾数读入 float/double 的整数/字节?
3) 与 1)、2) 相同的问题。
4) 写作题与 1)、2)、3) 相同。
如果我直接使用尾数或指数,我的动机是更快的计算。我想一定有一个非常简单的解决方案。
【问题讨论】:
-
在网上看一下IEE754,一切都在详细解释。我严重怀疑你真的需要这样的东西......
-
有一个非常简单的,不可移植的解决方案。如果我可以这么说,你会做一些奇怪的事情。我不会去那里。使用
float/double编写高效的代码,让编译器和 FPU 完成剩下的工作。 -
这是一个众所周知的直接处理位的示例,以便快速计算平方根的倒数。也许它会激发你的工作:betterexplained.com/articles/…
-
我建议使用浮点处理器或浮点硬件辅助来加快您的运算速度。否则考虑使用 Fixed Point 表示法。
标签: c++ ieee-754 exponent numerical-computing mantissa