明らかにjava.lang.StrictMath
含まれてjava.lang.Math
いない追加の関数(双曲線など)が含まれていますが、両方のライブラリにある関数に違いはありますか?
Math
クラスのJavadoc は、2つのクラスの違いに関する情報を提供します。
classのいくつかの数値メソッドとは異なり、class
StrictMath
の同等の関数のすべての実装はMath
、ビットごとに同じ結果を返すように定義されていません。この緩和により、厳密な再現性を必要としない、より優れたパフォーマンスの実装が可能になります。デフォルトでは、多くの
Math
メソッドStrictMath
は実装のために同等のメソッドを呼び出すだけです。コードジェネレーターは、プラットフォーム固有のネイティブライブラリまたはマイクロプロセッサー命令(使用可能な場合)を使用して、Math
メソッドのより高性能な実装を提供することをお勧めします。このようなより高性能な実装は、依然としての仕様に準拠する必要がありMath
ます。
したがって、Math
クラスは特定の操作が何をすべきかについていくつかのルールをレイアウトしますが、ライブラリのすべての実装でまったく同じ結果が返されることを要求しません。
これにより、ライブラリの特定の実装が同様の結果を返すことができますが、たとえば、Math.cos
クラスが呼び出された場合、まったく同じ結果にはなりません。これにより、異なる結果を返す可能性のあるプラットフォーム固有の実装(x86浮動小数点やSPARC浮動小数点など)が可能になります。
(プラットフォーム固有の実装の例については、ウィキペディアのSine記事の「ソフトウェア実装」セクションを参照してください。)
ただし、ではStrictMath
、異なる実装から返される結果は同じ結果を返す必要があります。これは、異なるプラットフォームでの結果の再現性が必要な場合に適しています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加