このセクションでは、Oracle Developer Studio コンパイラに含まれている数学ライブラリについて説明します。
Oracle Developer Studio 12.5 のデフォルトのベースインストールディレクトリは、Oracle Solaris の場合は /opt/developerstudio12.5 で、Linux の場合は /opt/oracle/developerstudio12.5 です。ただし、インストール時に別のベースインストールディレクトリである install-dir を指定できます。
Oracle Developer Studio の 32 ビットの静的ライブラリは、デフォルトで install-dir/lib/compilers ディレクトリとそのサブディレクトリにインストールされます。64 ビットの静的ライブラリは、SPARC の場合は install-dir/lib/compilers/sparcv9、x86 の場合は install-dir/lib/compilers/amd64 にインストールされます。
『数値計算ガイド』には、Oracle Solaris でのみ使用でき、32 ビットバージョンでは /usr/lib にインストールされ、64 ビットバージョンでは /usr/lib/64 にインストールされる共有の libm および libmvec ライブラリの説明も記載されています。
math.h および sunmath.h ライブラリヘッダーファイルは、Oracle Solaris では /usr/include にインストールされます。math.h ライブラリヘッダーファイルは、Linux では install-dir/lib/compilers/include/cc にインストールされます。
静的アーカイブ、共有オブジェクト、およびインクルードファイル用の Oracle Developer Studio install-dir の subdirectories は、リリースによって変更されることがあります。
libsunmath 数学ライブラリには、どの標準でも規定されていないが、数値ソフトウェアで役立つ関数が含まれています。また、libm.so.2 に含まれているが、libm.so.1 には含まれていない関数の多くも含まれています。libsunmath は、共有オブジェクトと静的アーカイブの両方として提供されます。
表 16 は、 libm.so.2 にない libsunmath 内の関数のリストを示しています。各数学関数について、この表では、一般に C プログラムから呼び出される倍精度バージョンの関数の名前のみを示しています。
|
libmopt ライブラリは、libm および libsunmath 内の一部の関数のより高速なバージョンを提供します。libmopt は、静的アーカイブとしてのみ提供されます。libmopt に含まれているルーチンは、libm 内の対応するルーチンを置き換えます。通常は、libmopt バージョンの方がはるかに高速です。ただし、例外的なケースの ANSI/POSIX®、SVID、X/Open、C99/IEEE のいずれの方法の処理もサポートしている libm バージョンとは異なり、libmopt ルーチンは、これらのケースの C99/IEEE の方法の処理しかサポートしていません。(標準規格への準拠を参照してください。)また、libm 内のすべての数学関数が、浮動小数点の丸め方向モードには関係なく妥当な正確性を持つ結果を示すのに対して、libmopt 内のどの関数も、もっとも近い値への丸め以外の丸め方向を使用して呼び出した結果は未定義です。libmopt を使用するプログラムは、いずれかの標準数学関数が呼び出される場合は常に、デフォルトのもっとも近い値への丸めモードが有効になっていることを確認する必要があります。libmopt を使用してプログラムをリンクするには、–xlibmopt フラグを使用します。