C ++ 128/256位固定大小的整数类型

我想知道是否有任何人可以推荐一个好的轻量级固定大小整数类型(128位甚至256位,甚至可能是模板参数化)库。 我已经看过GMP和co了,他们关心的很好,但是对于我的目的来说有点太大了,我现在对简单的标题解决方案感兴趣。性能很重要,目标架构将是x86和x86-64,也是一个合理的许可证(也就是GPL或LGPL)。     
已邀请:
Boost
库具有数据类型作为
multiprecision
库的一部分,适用于128到1024位的类型。
#include <boost/multiprecision/cpp_int.hpp>

using namespace boost::multiprecision;

int128_t mySignedInt128 = -1;
uint128_t myUnsignedInt128 = 2;
int256_t mySignedInt256 = -3;
uint256_t myUnsignedInt256 = 4;
int512_t mySignedInt512 = -5;
uint512_t myUnsignedInt512 = 6;
int1024_t mySignedInt1024 = -7;
uint1024_t myUnsignedInt1024 = 8;
    
目前正在审查Xint库,以成为Boost的一部分。虽然讨论相当有争议,但审查结果尚不清楚,图书馆满足您的一些要求: 仅标题 合理的执照 审查期间讨论的一点是性能。如果被接受为官方Boost库,我希望能及时解决性能问题。 所以我试试看:代码,文档。     
某些原生128位类型在某些平台上可用,您往往受到体系结构的限制。例如,
__m128
可用于SSE2? http://msdn.microsoft.com/en-us/library/ayeb3ayc.aspx 在此ABI中也列为
__int128
: http://www.x86-64.org/documentation/abi-0.99.pdf 然而,
uint128_t
uint256_t
的首选命名可以在SHOGUN中找到,SHOGUN是一个“专注于支持向量机(SVM)的大型机器学习工具箱” http://www.shogun-toolbox.org/doc/index.html     
根据您的要求,STL类
bitset
可能符合您的需求。它响应整数类型所做的所有位操作运算符(
<<
|
等),但遗憾的是不会像
+
*
这样的算术运算符。它的大小在编译时通过模板参数固定。另一个不幸的事情是,API无法获得底层二进制表示(例如,用于流式传输),这可能严重限制其有用性。 (我知道这是一个老问题,但这个答案可能有助于其他人。)     

要回复问题请先登录注册