Oracle® Solaris Studio 12.4: 数値計算ガイド

印刷ビューの終了

更新: 2015 年 1 月
 
 

3.6.1 アルゴリズムについて

SPARC ベースのシステム上の libm および libsunmath 内の基本関数は、テーブル駆動および多項式/有理式近似アルゴリズムを使用して実装されます。これらのアルゴリズムは、パフォーマンスまたは正確性を向上させるためにリリース間で変更される可能性があります。x86 ベースのシステム上の libm および libsunmath 内の一部の基本関数は、x86 命令セットで提供される基本関数カーネル命令を使用して実装されます。その他の関数は、SPARC ベースのシステム上で使用されるのと同じテーブル駆動または多項式/有理式近似アルゴリズムを使用して実装されます。

テーブル駆動および多項式/有理式近似アルゴリズムはどちらも、libm 内の共通基本関数と libsunmath 内の単精度共通基本関数に対して、1 最終桁単位 (ulp) 以内まで正確な結果を提供します。 SPARC ベースのシステムでは、libsunmath 内の 4 倍精度共通基本関数は、2 ulp 以内まで正確な結果を提供する expm1l および log1pl 関数を除き、1 ulp 以内まで正確な結果を提供します。(これらの共通関数には、指数関数、対数関数、べき乗関数、およびラジアン引数の循環三角関数が含まれます。双曲線三角関数や高級超越関数などのその他の関数は正確性が低くなります。)これらの誤差制限は、これらのアルゴリズムの直接の分析によって得られました。また、ユーザーは、ucbtest パッケージ http://www.netlib.org/fp/ucbtest.tgzhttp://www.netlib.org/fp/ucbtest.tgz 内の netlib から入手可能な BeEF (Berkeley Elementary Function テストプログラム) を使用して、これらのルーチンの正確性をテストすることもできます。