問題タブ [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.
boost - 倍精度 cpp_dec_float を目的の精度とのみ比較する
10 進数の float 型に boost::multiprecision ライブラリを使用しており、2 つの float を指定された精度と比較したいと考えています。
ただし、 cpp_dec_float は数値を指定された精度と比較していないようですが、ガード桁も含まれています。
出力:
期待される:
precision() で「切り詰め」ようとしましたが、役に立ちませんでした。イプシロン比較に頼らずに 2 つの数値を比較する方法はありますか?
c++ - Boost mpfr_float を使用して、pi や e などの可変精度の数学定数を作成する
mpfr バックエンドのラッパーに Boost.Multiprecision を使用していますが、希望の精度で pi (および e またはその他の数学定数) を作成する際に問題が発生しています。Boost.Multiprecision のチュートリアルページで定数にBoost.Math を使用しているため、やりたいことが可能になるはずです。チュートリアルでは、 - I want to do it with variable_precisionなどの型の固定精度数を使用しています。次のコードを確認してください。cpp_dec_float_50
mpfr_float
結果は数値でpi
、精度は 1000 ですが、出力ステートメントの結果から明らかなように、円周率は最大 165 桁しかありません。これは、 mypi
が精度 1000 であることを確認し、約 165 の正しい桁を出力し、約 835 を出力します。ゼロ。これは明らかに間違っています。
boost::multiprecision::mpfr_float を高精度で、boost::math::constants の定数を使用して作成することは可能ですか?
可変精度型を使用する必要があることに注意してください。また、他の高精度で固定精度の型はオプションではないことに注意してください。実行時にオンザフライで精度を変更できる必要があります。
c - 拡張範囲の浮動小数点型
Cで非常に小さいオーダー (たとえば、 0.6745 × 2 -3000 ) の浮動小数点数を表す必要があります。そのようなサポートがプラットフォームに依存しない (CPU と GPU-CUDA の両方で動作する) 必要があります。有効桁数を長くする必要はありません。
高精度ライブラリ(GMP、MPFRなど)はGPU上で動かないので使えません。一方、CUDA はlong double
型をサポートしていません。解決策はありますか?カスタム浮動小数点型をどうにかして実装することは可能ですか?
c++ - HugeInteger クラスの作成
私は C++ を初めて使用しますが、これが割り当てのために行うと想定していることです。
40 要素の数字配列を使用してそれぞれ 40 桁の整数を格納するクラス HugeInteger を作成します。メンバー関数の入力、出力、加算、および減算を提供します。HugeInteger オブジェクトを比較するには、関数 isEqualTo、isNotEqualTo、isGreaterThan、isLessThan、isCreaterThanOrEqualTo、および isLessThanOrEqualTo を提供します。これらはそれぞれ、2 つの HugeInteger の間に関係が成立する場合に true を返し、成立しない場合に false を返す「述語」関数です。また、述語関数 isZero を提供します。
追加のポイントに関する推奨事項: メンバー関数の乗算、除算、モジュラスを提供します。
クラス内の 2 つのオブジェクトを比較する方法がわかりません。
私のヘッダーコーディングは次のようになります。
私の .cpp コーディングは次のようになります。
そして、私のメインのプログラミング コードは次のようになります。
2 つのオブジェクトを比較するときにプログラムを実行するたびに、何があっても true を返します。何が間違っているのか、それを修正する方法がわかりません。どんな助けでも大歓迎です!ありがとう!
c++ - Boost::multiprecision で sqrt と ceil を使用するには?
Boost::multiprecison を使用してエラーなしでこの単純なコード行を実行する方法を知っていますか?
MSVC を使用すると、「sqrt」にエラーが発生し、次の方法で修正できます。
次に、「ceil」にエラーがあり、次の方法で修正できます。
すると「ジェネリック相互変換」のエラーが!?!
このように単純なコード行を実現するには、もっと洗練された方法があるはずだと思いませんか? それについて何かアイデアがあれば教えてください。
よろしく。