問題タブ [mpfr]

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 に答える
428 参照

c++ - MPFR を使用した異なる精度の非正規数

さまざまなnビットのバイナリ浮動小数点形式をエミュレートしたいと思います。それぞれに指定されたe_maxe_minがあり、pビットの精度があります。これらの形式で、IEEE-754 標準に忠実な非正規数をエミュレートしたいと考えています。

当然のことながら、検索の結果、IEEE-754 に準拠し、関数でサブノーマルをサポートできる MPFR ライブラリにたどり着きましたmpfr_subnormalize()。ただし、サブノーマル対応環境を正しくセットアップするためにmpfr_set_emin()と を使用すると、いくつかの混乱に遭遇しました。mpfr_set_emax()これは MPFR マニュアルで使用されている例であるため、サンプル形式として IEEE 倍精度を使用します。

http://mpfr.loria.fr/mpfr-current/mpfr.html#index-mpfr_005fsubnormalize

上記のコードは、上記のリンクの MPFR マニュアルからのものです。e_maxe_minもの期待値と等しくないことに注意してくださいdouble。ここで、pdoubleタイプから予想されるように 53 に設定されていますが、e_maxは正しい値の 1023 ではなく 1024 に設定されており、e_minは -1073 に設定されています。-1022 の正しい値を大きく下回っています。指数の境界をきつく設定しすぎると、MPFR の中間計算でオーバーフロー/アンダーフローが発生することは理解していますが、e_minを正確に設定することが正しい非正規数を確保するために重要であることがわかりました。高すぎたり低すぎたりすると、MPFR の結果 ( で更新mprf_subnormalize()) が対応する結果とは異なります。double結果。

私の質問は、指数境界e_maxe_minを持つ浮動小数点形式の正しい非正規動作を保証するために、どの値をmpfr_set_emax()and (特に)に渡すかをどのように決定する必要があるかということです。この問題に関する詳細な文書や議論はないようです。mpfr_set_emin()

心より感謝申し上げます。

ジェームズ。

EDIT 30/07/16: これは、単精度数のe_maxe_minの選択を示す小さなプログラムです。

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

julia - Juliaのexp関数は0に評価されます

Juliaで波動関数の確率密度を計算してプロットしたい. 次の関数を評価するために、Julia コードの小さなスニペットを書きました。

P = A^2 e^{-(\sqrt(Cm)/\hbar)x^2}

ジュリア(不完全)コードは次のとおりです。

私が評価する最後の行t0.000000000000.... BigFloat の精度も設定してみました。運が悪い!私は何を間違っていますか?助けていただければ幸いです。

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

c++ - MPFR からファイルに出力

計算結果MPFRをファイルに出力したいのですが、方法がわかりません。MPFR高精度の浮動小数点演算を行うために使用されます。数値を印刷するmpfr_tには、次の関数を使用します。

size_t mpfr_out_str (FILE *stream, int base, size t n, mpfr t op, mp rnd t rnd)

私の問題は、FILE*オブジェクトと、それらがオブジェクトにどのように関連しているかを理解していないことだと思いfstreamます。

行を変更my_fileすると、期待どおりに番号が画面に出力されますが、ファイルに取得する方法がわかりません。mpfr_out_strstdout

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

c++ - MPFR C++ 整数のような浮動小数点数を表示

MPFR C++ を使用してプログラムのコンパイルに成功したばかりで (1 回目)、かなり大きな数を出力する必要がありますが、それらは整数ではなく工学表記としてのみ出力されます。私が読んだところによると、ライブラリは (任意の) 整数用に最適化されていないため、浮動小数点数を整数として使用しても問題ありません。私は C++ の初心者にすぎないので、利用可能なすべてのツールを使用する方法はわかりませんが、(大きな) 浮動小数点数を整数であるかのように出力する方法はありますか? 例として、 (say) の代わりに1.12276e+44print 112275575285571389562324404930670903477890625. を試してみるstd::cout.precision(44)と が得られますが1.12275575285571389562324404930670903477890625e+44、見栄えは良くありません。

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

python - Python の多精度有理比較: Fraction、mpq、mpfr

浮動小数点計算はその性質上、正確ではないことを理解しています。多精度配給比較を行うための最良のライブラリ/方法を見つけようとしています。Fraction、mpq、mpfr を比較しています。後の 2 つは gmpy2 ライブラリからのものです。最初のものは分数パッケージからのものです。私はpython3.3を使用しています

これは私が比較に使用したスクリプトです。あまりうまく書かれていませんが、非常に単純なものです。

結果は次のとおりです。

つまり、基本的に Fraction が最も正確であるという結果を得ましたが、非常に遅いです。この質問に対して、私が聞きたかったのは、

  1. 私も試してみるべきだと思う他のケースはありますか?
  2. 他のライブラリ?
  3. 速度が重要な場合、gmpy2 ライブラリを使用して精度を向上させる方法はありますか?
0 投票する
1 に答える
223 参照

c++ - std::vector を使用して動的に割り当てられた mpfr_t 行列

mpfr_t 要素のマトリックスとして機能するクラスが必要です。STL ベクトルは、必要な数だけ動的に割り当てるのに最適なアイデアだと思いましたが、ここでいくつかのエラーが発生します。

エラーは次のとおりです。

私は本当にこれを調べました、そして私はそれを理解することができません。作品を作る方法はありvector< vector<mpfr_t> >ますか?誰が何が起こっているのか知っていますか?