我正在寻找一个免费的 C++ 定点库(主要用于嵌入式设备,而不是用于任意精度数学)。基本上,要求是:
- 没有不必要的运行时开销:任何可以在编译时完成的,都应该在编译时完成。
- 能够在定点和浮点之间透明地切换代码,没有固有的开销。
- 定点数学函数。如果您需要来回转换以求平方根,则使用定点没有多大意义。
- 占地面积小。
有什么建议么?
我正在寻找一个免费的 C++ 定点库(主要用于嵌入式设备,而不是用于任意精度数学)。基本上,要求是:
有什么建议么?
有一个开源定点数学库项目,可以通过以下链接找到:
它是一个为 C++ 用户提供 C++ 类接口的 C 静态库,它实现了以下功能:Trig。函数:sin、cos、tan、asin、acos、atan、atan2 饱和算术:sadd、ssub、smul、sdiv 其他函数:sqrt、exp
它只支持16.16 定点数据类型。
它是一个积极开发的开源项目(寻找感兴趣的开发者)。
查看以下关于在 C++ 中处理定点表示的两个很好的实现(不需要外部库)。
Peter Schregle的定点类。它还有效地实现了加法、乘法和除法等基本运算。
代码示例:
#include <fixed_point.h>
using namespace fpml;
main()
{
fixed_point<int, 16> a = 256;
fixed_point<int, 16> b = sqrt(a);
}
Khuram Ali在 C++ 中实现定点数。
这是 GitHub 上的一个开源定点库:
https://github.com/mbedded-ninja/MFixedPoint
它支持 32 位和 64 位定点数(具有任意商)和快速(一切都是模板化的,但需要更多手动操作)和慢速定点数(更自动,但更慢)。
它面向嵌入式平台,但是我在微控制器和 Linux 上都使用过它,没有任何问题。
我有一个不错的小 c++ 头文件。你可以在sweet::Fixed下找到它。简单定义 typedef sweet::Fixed MyFloat; 并像任何其他浮点值一样使用它。或者稍后交换您想要的任何浮点类型。该类有两个 64 位值。一个用于整数部分,一个用于小数部分。
我在sweet.hpp中有一个小的定点 c++11 类头 impl,名为fixed.hpp。它对两个部分都使用 32 位。
typedef float MyFloat; // This will feel the same
typedef sweet::Fixed MyFloat; // like this
I will try http://www.efgh.com/software/fixed.htm tiny lib...
我从未使用过SPUC,但描述声称定点数据类型和一些数学函数。