3

sin、cos、floor、ceil、exp、および32ビットと64ビットのLinux、solaris、および場合によっては他のプラットフォームでのログオンに対してまったく同じ結果を生成する、公開されているライブラリはありますか?

私は次の代替案を検討しています。a
)各プラットフォームで同じ最適化レベルでコンパイルされたcephesgcc -mfpmath=sse ...しかし、これが機能するかどうかは明らかではありません。
b)MPFRですが、これが遅すぎるのではないかと心配しています。

精度について(編集済み):この特定のアプリケーションでは、正確な値に数値的に最も近い値を生成するものは実際には必要ありません。答えは、すべてのプラットフォーム、OS、および「ビットネス」でまったく同じである必要があります。そうは言っても、値は妥当である必要があります(5桁で十分でしょう)。最初の質問でこれを明確にしなかったことをお詫びします。

十分に低い精度設定のMAPMまたはMPFRでうまくいくかもしれませんが、「複数の精度」の機械/フレーバーがないものを見つけたいと思っていました。とにかく、これを試してみます。

4

5 に答える 5

4

crlibmはこれに適したツールです。それにリンクされた以前のポスター。正しく丸められているため、適切にコンパイルされた場合、IEEE-754準拠のハードウェアを備えたすべてのプラットフォームでビット同一の結果が得られます。MPFRよりもはるかに高速です。

于 2009-07-22T00:08:04.900 に答える
4

http://lipforge.ens-lyon.fr/www/crlibm/index.htmlが探しているものになります (これは、C99 の標準数学ライブラリを置き換えることを目的としたライブラリです--したがって、通常のケースでは十分なパフォーマンスを維持しながら、IEEE 754 丸めモードに従って正しく丸められた結果を保証します) ?

于 2009-07-15T12:08:13.093 に答える
1

あなたはそれを必要としないはずです。floor と ceil は計算が簡単なので正確です。

あなたが関心を持っているのは、sin、cos、exp などの超越項の最後のビットを丸めることです。ただし、これらは CPU マイクロコードにネイティブであり、ライブラリに関係なく一貫して高品質で実行できます。ただし、丸めはチップ アーキテクチャごとに異なります。

したがって、超インデンタルの正確な答えが実際にあなたの目標である場合、ポータブル ライブラリが必要であり、そうすることで大きな効率をあきらめることにもなります。一貫したULP結果を提供するだけでなく、任意の精度を定義できる副次的な利点として、MAPMのようなポータブルライブラリを使用できます。

このようなツールやこのようなツールを使用して、数学の精度を確認できます

于 2009-07-15T02:12:57.890 に答える
1

あなたはSSEの使用について言及しています。x86 チップのみで実行することを計画している場合、予想される不一致は正確には何ですか?

MPFR については、心配しないでください。テストしてください。ところで、それが GCC に含まれるのに十分であるなら、それはおそらくあなたにとって十分であるでしょう。

于 2009-07-15T02:15:48.743 に答える
1

MPFR を使用したい。そのライブラリは何年​​も前から存在しており、太陽の下ですべてのプラットフォームに移植され、多くの人々によって最適化されています.

MPFR がお客様のニーズに十分でない場合は、完全なカスタム ASM 実装について話しています。この場合、専用ハードウェアでの実装を検討する方が効率的かもしれません。

于 2009-07-15T03:22:36.090 に答える