問題タブ [boost-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.
c++ - boost::random::uniform_int_distribution<> の決定論的シードを設定することは可能ですか?
私はboost::random::uniform_int_distribution<boost::multiprecision::uint256_t>
いくつかの単体テストを生成するために使用しています。を使用していることに注意してくださいmultiprecision
。これが、標準ライブラリではなく boost を使用する必要がある理由です。定期的なテストでは、非決定論的なシードから決定論的な結果を生成する必要がありますが、テストが失敗した場合に後で結果を再現できるようにする必要があります。
したがって、真の乱数を生成してシードとして使用し、それを に注入しuniform_int_distribution
ます。目的は、これが失敗した場合、テストが失敗したのと同じシードで問題を再現できるようにすることです。
ブーストのこの部分は、そのインターフェイスでのシードベースの乱数の生成をサポートしていますか? そうでない場合、これを行う他の方法はありますか?
現在、乱数を生成する方法は次のとおりです。
PS: 主な要件は をサポートすることであることに注意してくださいmultiprecision
。16 ビットから 512 ビットまでの数値が必要です。これはテスト用であるため、パフォーマンスは実際には要件ではありません。他の方法で大きな乱数を生成し、それらを に変換しても問題ありませんboost::multiprecision
。
c++ - Boost Multiprecision ライブラリ型のいずれかを使用して、2 つの非常に大きな数のモジュラー逆数をどのように見つけますか? (cpp_int、gmp_int など)
Boost の Multiprecision ライブラリ (gmp_int、cpp_int など) によって提供されるデータ型のいずれかである、2 つの数値の Modular Multiplicative Inverse を見つける必要があります。そうするための組み込み関数はありますか?そうでない場合は、続行する方法を説明できますか?
boost - boost::multiprecision::uint128_t sizeof は 16
このリンクごとに、
boost::multiprecision::uint128_t sizeof は 24 です
uint128_t は 24 である必要があります。
Linux Ubuntu 16.04 x64 で試してみたところ、16 と表示されました。
何らかの理由?
c++ - コードは Boost Multiprecision Library float で動作しますが、GMP バックエンドでは動作しません
Boost Multiprecision Library の使い方を学んでいます。演習として、次のDistribution Construction Exampleに従った後、ライブラリの組み込みの高精度小数浮動小数点表現を使用して、高精度で負の二項 PDF を計算する関数を正常に実装することができましたcpp_def_float
。
期待どおりに動作し、次の出力が出力されます。
ただし、上記のコードを GMP バックエンドを使用するように変更したいと考えています。hereから理解したように、適切な を含めて、gmp.hpp
適切な GMP float 型を使用するだけcpp_def_flota
です。次のように:
それでも、これは機能せず、次のコンパイル エラーが発生します (ここでは最初にいくつかのエラーのみを表示します。後で完全なエラー ログにリンクします)。
完全なエラー ログは、ここで確認できます。
私の質問は、私が間違っていることです.GMPバックエンドを使用してこれを機能させるにはどうすればよいですか? それが役立つ場合、私は64ビットのUbuntu 18.04インストールでVisual Codeを使用しています。