問題タブ [multiprecision]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
461 参照

c++ - Boost Multiprecision 乱数発生器のシード エラー

ブーストライブラリのドキュメントに従って、多精度乱数整数を生成していますが、ドキュメントにはシードの設定方法が記載されていません。

コンパイル エラーが発生せずにシードを設定する方法がわかりません。

コンパイル方法:

そして、これは私が得るコンパイルエラーです:

また、c++11 でコンパイルしようとしましたが、まだエラーがあります。それがどのように行われたかを見せてもらえますか?

C++11 でコンパイルする

結果:

0 投票する
2 に答える
1313 参照

c++ - boost lib を使用した高精度浮動小数点 (16 桁以上)

物理実験のシミュレーションを実行しているので、非常に高い浮動小数点精度 (16 桁以上) が必要です。Boost.Multiprecision を使用していますが、何を試しても 16 桁を超える精度は得られません。たとえば、C++ と eclipse コンパイラを使用してシミュレーションを実行します。

出力は次のとおりです。

ただし、次のようにする必要があります。

ご覧のとおり、16 桁以降は正しくありません。なんで?

0 投票する
1 に答える
431 参照

c++ - Boost multiprecision : 再帰的なテンプレートのインスタンス化が最大長 256 を超えました

ブーストの多倍数で少し遊んでみると、次のエラーが発生しました

インスタンス化エラーの署名を含む多くの行が続きます。次のコードをコンパイルしたときに問題が発生しました。

このコードは、通常の整数でインスタンス化すると完全に正常にコンパイルされるため、なぜこれが起こるのかわかりません。

編集:私は自分自身に答えます。テンプレートと再帰を扱うときは常に明示的であることを忘れないでください!

0 投票する
1 に答える
308 参照

c++ - 特定の精度で新しい cpp_dec_float 型を作成する

私は c++ を使用して物理シミュレーションを実行しています。正確な結果を得るには、boost::multiprecision を使用しています。これまでは cpp_dec_float_50 タイプを使用していましたが、今度は異なる変数のシミュレーションを異なる精度でテストする必要があります。

では、cpp_dec_float_27(27 桁の精度) などの新しいタイプを作成するにはどうすればよいですか?

テンプレートコードを変更しようとしました:

しかし、私は多くの問題を抱えています。

0 投票する
1 に答える
297 参照

c++ - 2、8、10、16 以外の基数で mpz_int をブーストする

標準ベースの文字列から多精度整数を作成できます

GMP のように基数 2 から 62 を使用するには、たとえば次のように使用できます。

補助変数のないより直接的なアプローチはありますか?

0 投票する
1 に答える
714 参照

c++ - boost::multiprecision を使用して実行時の数値精度を変更する方法

boost::multiprecisionのドキュメントから読みました:

数値の型に応じて、精度は任意に大きく (使用可能なメモリによってのみ制限される)、コンパイル時に固定される (たとえば、10 進数で 50 桁または 100 桁)、またはメンバー関数によって実行時に制御される変数になります。単純なユーザー定義型よりも優れたパフォーマンスを得るために、これらの型は式テンプレート対応です。

さらにドキュメントを読みましたが、実行時の精度の変更に関するものは何も見つかりませんでした。コンパイル時に精度を設定できるテンプレートしか見たことがありませんが、それは私が望んでいるものではありません (非常に高い倍率を使用してフラクタルをズームするプログラムを作成したい)。

実行時に精度を変更できる double 型を作成するにはどうすればよいですか?

0 投票する
3 に答える
510 参照

c - 多倍長加算の実装

基数 2^32 表現に基づいて 256 ビット オペランドの多精度演算を実装しようとしています。そのために、オペランドを次のように定義しました。

そして、ここに私のMP追加関数があります:

簡単にするためにループを使用せずに実装しました。今、私が自分の関数を内部でテストするとmain:

私が持っている:

ただし、sage で結果を検証したところ、次の結果が得られました。

ここで私を助けてくれませんか?

0 投票する
0 に答える
63 参照

c - ARM インライン アセンブリの多倍精度乗算

ARM アセンブリは初めてで、C 関数の 1 つをインライン アセンブリに実装したいと考えています。私の関数は、32 ビットの符号なし整数を 256 ビットの符号なし整数で乗算し、結果を 288 ビットの符号なし整数データ型にする多精度乗算です。データ型を次のように定義しました。

ここに私の機能があります:

私には問題ないようです。しかし、たとえば実行後の最初の行でコードをデバッグすると、次のよう になり"umull %0, %1, %9, %10;\n\t" ます。

組み立て説明書に誤りがあったようです。誰かが私にそれを説明できますか?