我正在寻找一个免费的C ++定点库(主要用于嵌入式设备,不用于任意精度数学)。基本上,要求是:
有什么建议吗?
答案 0 :(得分:6)
有一个开源定点数学库项目,可以通过以下链接找到:
它是一个C静态库,为C ++用户提供C ++类接口,它实现了以下功能: 触发。功能:罪,cos,棕褐色,asin,acos,atan,atan2 饱和算术:sadd,ssub,smul,sdiv 其他功能:sqrt,exp
它只支持16.16 fixed-point datatype。
这是一个积极开发的开源项目(寻找感兴趣的开发人员)。
答案 1 :(得分:5)
查看以下两个关于在C ++中处理定点表示的好实现(不需要外部库)。
Fixed-Point-Class。它还有效地实现了基本操作,如添加,乘法和划分。
代码示例:
#include <fixed_point.h>
using namespace fpml;
main()
{
fixed_point<int, 16> a = 256;
fixed_point<int, 16> b = sqrt(a);
}
答案 2 :(得分:1)
我会尝试http://www.efgh.com/software/fixed.htm 小小的... ...
答案 3 :(得分:1)
我有一个很好的小c ++标题。您可以在sweet::Fixed下找到它。只需定义typedef sweet :: Fixed MyFloat;并像任何其他浮点值一样使用它。或者换一下你想要的漂浮类型。该类有两个64位值。一个用于整数部分,一个用于分数。
我在sweet.hpp中有一个名为 fixed.hpp 的小定点c ++ 11类头文件。它对两个部分都使用32位。
typedef float MyFloat; // This will feel the same
typedef sweet::Fixed MyFloat; // like this
答案 4 :(得分:1)
这是GitHub上的一个开源定点库:
https://github.com/mbedded-ninja/MFixedPoint
它支持32位和64位定点数(具有任意商),并且都快(一切都是模板化的,但更多的是手动)和慢定点数(更自动,但更慢)。
它面向嵌入式平台,但我在微控制器和Linux上都使用它而没有任何问题。
答案 5 :(得分:-3)
也许您可以尝试使用GMP或MPFR库。我很确定它们会满足您的性能需求,但也许它们太满足您的需求而您想要更轻量级的东西。无论如何,请看这里:
或在这里:
答案 6 :(得分:-3)
我从未使用SPUC,但描述声明了定点数据类型和一些数学函数。