16

仲間のSOが、優れた軽量の固定サイズ整数型(128ビットまたは256ビット、場合によってはテンプレートのパラメーター化)ライブラリーを推奨できるかどうか疑問に思いました。

私はGMPと共同を見てきましたが、彼らは大事にしていますが、私の目的には少し大きすぎます。現時点では、単純なヘッダーのみのソリューションに興味があります。パフォーマンスは重要であり、ターゲットアーキテクチャはx86およびx86-64であり、これも妥当なライセンスです(GPLまたはLGPLは何もありません)。

4

5 に答える 5

11

ライブラリには、ライブラリ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;
于 2015-02-25T02:29:28.280 に答える
2

Xintライブラリは現在、Boost の一部になるように検討中です。かなり議論の余地があり、レビューの結果はまだ明らかではありませんが、ライブラリはいくつかの要件を満たしています。

  • ヘッダーのみ
  • 合理的なライセンス

ただし、レビュー中に議論されるポイントの 1 つはパフォーマンスです。公式の Boost ライブラリとして受け入れられれば、パフォーマンスの問題がすぐに解決されることを期待しています。

だから私はそれを試してみます:CodeDocumentation

于 2011-03-09T10:00:37.533 に答える
0

要件によっては、STL クラスbitsetがニーズに合う場合があります。整数型が行うすべてのビット操作演算子 ( など) には応答します<<|、残念ながら+orのような算術演算子には応答しません*。そのサイズは、テンプレート パラメーターを介してコンパイル時に固定されます。もう 1 つの不幸な点は、API が基礎となるバイナリ表現 (たとえば、ストリーミング) を取得する方法を提供しないことです。これにより、API の有用性が大幅に制限される可能性があります。

(これは古い質問ですが、この回答は他の人に役立つかもしれません。)

于 2014-07-14T02:40:18.970 に答える
0

一部のネイティブ 128 ビット型は特定のプラットフォームで使用できますが、アーキテクチャによって制限される傾向があります。たとえば__m128、SSE2 で使用できますか?

http://msdn.microsoft.com/en-us/library/ayeb3ayc.aspx

__int128この ABI にも記載されています。

http://www.x86-64.org/documentation/abi-0.99.pdf

ただし、 「特にサポート ベクター マシン (SVM) に重点を置いた大規模な機械学習ツールボックス」である SHOGUN には、uint128_tとの好ましい命名が見られます。uint256_t

http://www.shogun-toolbox.org/doc/index.html

于 2011-03-09T09:20:46.283 に答える