7

任意精度演算は数値解析ソフトウェアに影響を与えましたか?

ほとんどの数値解析ソフトウェアは、同じフロートとダブルを使い続けていると思います。

私の意見では、特に有理数表現の使用と組み合わせた場合に、任意精度の算術を使用することでメリットが得られる計算がいくつかあるため、私が正しい場合は、その理由を知りたいと思います。GNUMulti-PrecisionLibraryで実行されます。

私が間違っていれば、例がいいでしょう。

4

8 に答える 8

7

任意精度は遅いです。非常に遅い。また、無理数を生成する関数 (ほとんどの三角関数など) を使用すると、任意精度の利点が失われます。

では、その精度を必要としない、または使用できない場合、なぜ CPU 時間を費やすのでしょうか?

于 2009-07-30T21:47:58.153 に答える
7

任意精度演算は数値解析ソフトウェアに影響を与えましたか? ほとんどの数値解析ソフトウェアは、同じ float と double を使い続けていると思います。

任意精度 (ap) がより広く使用されていないいくつかの残念な理由があります。

  • 重要な機能のサポートの欠如: NaN/Infinities の欠損値、複素数または特殊関数の欠如、丸めモードの実装の欠如またはバグ (GMP では実装されていない半分の丸め)、重要なイベントのハンドラーの欠如 (有効桁数の損失) 、オーバーフロー、アンダーフロー...OK、これはほとんどの標準ライブラリでは実装されていません)。何でこれが大切ですか ?それがなければ、任意の精度で問題を定式化するために多くのエネルギーを投資する必要があるため (複素数ライブラリまたは特殊関数を ap で作成したことがありますか?)、変更を追跡するために必要な機能が ap にないため、二重の結果を再現できません。

  • すべてのプログラマーの 99.9% は、数値にまったく興味がありません。ここで最もよく聞かれる質問の 1 つは、「なぜ 0.1+0.1 が 0.2 ではないのですか???? ヘルプ !!!」です。では、なぜプログラマーは時間をかけて特定の ap の実装を学び、その中で問題を定式化する必要があるのでしょうか? ap の結果が double の結果から逸脱し、数値の知識がない場合、どのようにバグを見つけますか? 倍精度は不正確すぎますか? ap ライブラリにバグはありますか? 何が起こっている ?!知るか....

  • 計算方法を知っている多くの数値専門家は、ap の使用を思いとどまらせます。FP のハードウェア実装に不満を感じており、再現性を実装することはとにかく「不可能」であり、ほとんどの場合、入力データの有効桁数はわずかしかないと主張しています。そのため、ほとんどの場合、精度の低下を分析し、それを最小限に抑えるために重要なルーチンを書き直します。

  • ベンチマーク中毒。うわー、私のコンピューターは他のコンピューターより速いです。他のコメンテーターが正しく指摘したように、ap はハードウェアでサポートされている浮動小数点データ型よりもはるかに遅くなります。これは、手動で整数データ型を使用してプログラムする必要があるためです。この態度の差し迫った危険の 1 つは、問題をまったく認識していないプログラマーが、まったく印象的なナンセンスな数字を吐き出すソリューションを選択することです。私はGPGPUについて非常に慎重です。確かに、グラフィック カードはプロセッサよりもはるかに高速ですが、その理由はそれほどではありません。精度と精度。double (64 ビット) の代わりに float (32 ビット) を使用すると、計算および転送するビット数がはるかに少なくなります。人間の目は非常にフォールト トレラントであるため、1 つまたは 2 つの結果が立ち入り禁止であっても問題ありません。ヘック、ハードウェア コンストラクターとして、不正確でひどく丸められた計算を使用して計算を高速化できます (これはグラフィックスでは問題ありません)。これらの厄介なサブノーマル実装または丸めモードを破棄します。プロセッサが GPU ほど高速でないのには、十分な理由があります。

数値の問題に関する情報については、William Kahans のページリンク テキストをお勧めします。

于 2009-12-07T21:15:00.100 に答える
2

Wolfram Research Instituteは、実用的な方法で任意精度の区間演算を Mathematica のコアに組み込むことに多大な努力を払い、素晴らしい仕事をしました。Mathematica はほとんどすべての計算を任意の精度で透過的に実行します。

于 2010-07-01T22:59:38.477 に答える
1

数値問題に対する正確な答えが必要になることは非常にまれです。ほとんどの場合、特定の精度で結果が必要になることがあります。また、専用のハードウェアで運用する場合に最も効率的な運用が可能です。まとめると、これは、最も一般的な問題に対して十分な精度を持つ実装を提供するようにハードウェアに圧力がかかることを意味します。

そのため、経済的圧力により、一般的なケースに対して効率的な(つまりハードウェアベースの)ソリューションが作成されました。

于 2009-10-30T14:40:53.250 に答える
1

Mathematica のようなプログラムを見ると、float や double を使用していないことがわかると思います。暗号化を調べると、float と double を使用していないことがわかります (ただし、主に整数を使用しています)。

基本的には審判です。自分の製品が精度と精度の向上によって恩恵を受けると感じている人々は、拡張精度または任意精度の演算ソフトウェアを使用しています。精度が必要だと思わない人は使いません。

于 2009-07-30T21:50:38.477 に答える
1

Dirk Laurie によるこの論文は、可変精度の使用に関する注意事項を示しています。

于 2010-09-06T05:39:42.483 に答える
1

任意精度は、無理数ではうまく機能しません。すべてをひっくり返すと、数値解析ソフトウェアに役立つと思います。計算に必要な精度を把握する代わりに、最終的な精度をソフトウェアに指示する必要があります。

このようにして、計算に十分な大きさの有限精度型を使用できます。

于 2009-07-30T21:53:40.437 に答える
0

あなたの質問とは直接関係ありませんが、l Trefethen によるこの論文も参照してください。

于 2012-07-24T22:17:04.620 に答える