Boost 的多精度模拟低精度快速浮点数

Posted

技术标签:

【中文标题】Boost 的多精度模拟低精度快速浮点数【英文标题】:Boost's multiprecision to emulate low-accuracy fast floats 【发布时间】:2020-03-27 16:17:26 【问题描述】:

我有一个 stm32-F1 处理器,它的浮点运算速度非常慢,我有一些来自 F7 处理器的库,它使用了很多浮点数。我想在我可怜的 F1 上使用这个库,所以我正在考虑一种方法,尽可能少地对代码进行调整,并使用相同的接口但使用底层整数类型来模拟浮点数。重要的是要注意,我只需要 7 位精度(0.001 到 4094.999 之间的数字,这就是为什么我猜像 typedef number<cpp_dec_float<7> > fixed7; 这样的东西在我的情况下比浮点数更快。 boost的多精度是否足够好?你有什么其他的建议?我应该制作自己的算术类型吗?

【问题讨论】:

期望的量级是多少?仅指定数字计数对于定点是不够的,因为比例是固定的并由您选择(这就是使定点中的点固定的原因)。它应该是十进制定点还是二进制? (二进制有助于提高乘法效率,与加法无关) @harold 你说得对,我有加法和乘法,所以我猜是十进制定点,我感兴趣的范围是 0.001 到 4094.999 所以我说我只需要三到四位数是错误的,我需要 7精度位数 对于 3 位精度,您至少需要 10 个小数位。这意味着从 Q22.10 到 Q12.20 【参考方案1】:

毕竟我找到了解决办法。 Τ他的数字系统非常适合我的目的,并且使用起来更简单,因为multiprescision 是基于比普通 c++ 具有更高的精度,但我只想要更低的精度。 Here is John's MC Farlane numeric types

【讨论】:

以上是关于Boost 的多精度模拟低精度快速浮点数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Javascript使浮点数的精度相同

单精度浮点数操作

js 双精度浮点数

Python 模拟32bit 浮点数运算

python浮点数精度问题

浮点数中单精度和双精度的编码表示