モジュール java.base
パッケージ java.lang

クラスStrictMath

java.lang.Object
java.lang.StrictMath

public final class StrictMath extends Object
StrictMathクラスは、指数関数、対数関数、平方根、および三角関数といった基本的な数値処理を実行するためのメソッドを含んでいます。

Javaプログラムの移植性を保つために、このパッケージにある一部の数値関数の定義は、既存のアルゴリズムと同一の計算結果を出すことが求められています。 こうしたアルゴリズムは、有名なネットワーク・ライブラリであるnetlibから「Freely Distributable Math Library」(fdlibm)パッケージとして入手可能です。 これらのアルゴリズムは、Cプログラミング言語で記述され、Javaに変換され、Java算術のルールに従ってすべての浮動小数点操作および整数操作で実行されることを理解されます。 翻訳では、次の変換が使用されます:

  • Cでの64ビットdoubleの上限および下限値の抽出および設定は、ビット単位変換doubleから longおよびlongからdoubleを実行するJavaプラットフォーム・メソッドを使用して表されます。
  • Cの符号なしint値は、Javaの符号付き int値にマップされ、同じテキスト操作の結果が異なる符号なしセマンティクスをレプリケートするための操作の更新が行われます。 たとえば、符号なしC値の>>シフトは、符号付きJava値の>>>シフトに置き換えられます。 符号なしC値 (<, <=, >, >=)のサイズ付き比較は、compareUnsignedに対する意味的に同等のコールに置き換えられます。

Javaの数学ライブラリはfdlibmのバージョン5.3を基に定義されています。 fdlibmで複数の定義が与えられている関数(たとえばacos)については、IEEE 754コア関数のバージョンを使用してください(ファイル名がeで始まるファイルの中にある)。 fdlibmセマンティックスを必要とするメソッドは、sincostanasinacosatanexploglog10cbrtatan2powsinhcoshtanhhypotexpm1、およびlog1pです。

このプラットフォームでは、intおよびlongプリミティブ型を使って2の補数の符号付き整数演算を実行します。 開発者は、算術演算が一貫して正しい結果を生成するようにプリミティブ型を選択する必要があります。これは、場合によっては、それらの演算が計算の値の範囲をオーバーフローしないことを意味しています。 ベスト・プラクティスは、プリミティブ型と、オーバーフローを回避するアルゴリズムを選択することです。 サイズがintまたはlongで、オーバーフロー・エラーを検出する必要がある場合、名前がExactで終わるメソッドは結果のオーバーフロー時にArithmeticExceptionをスローします。

IEEE 754推奨される操作

Mathクラスでは、選択したMathメソッドおよびStrictMathメソッド「IEEE 754の推奨操作に関連」の実装基準の共有品質について説明します。
導入されたバージョン:
1.3
関連項目: