Oracle® Developer Studio 12.5: 数値計算ガイド

印刷ビューの終了

更新: 2016 年 6 月
 
 

3.1 Oracle Solaris の数学ライブラリ

このセクションでは、Oracle Solaris 10 OS にバンドルされている数学ライブラリについて説明します。これらのライブラリは共有オブジェクトとして提供され、Oracle Solaris ライブラリの標準の場所にインストールされます。

3.1.1 標準数学ライブラリ

Oracle Solaris の標準数学ライブラリ libm には、Oracle Solaris オペレーティング環境が準拠しているさまざまな標準に必要な基本数学関数とサポートルーチンが含まれています。

Oracle Solaris 10 OS には、libm の 2 つのバージョンである libm.so.1libm.so.2 が含まれています。libm.so.1 は、Oracle Solaris 9 OS 以前のバージョンによってサポートされる標準に必要な関数を提供します。libm.so.2 は、Oracle Solaris 10 OS (C99 を含む) によってサポートされる標準に必要な関数を提供します。libm.so.1 は、Oracle Solaris 9 OS 以前のシステム上でコンパイルおよびリンクされたプログラムが引き続き変更なしで動作するように、下位互換性のために提供されています。libm.so.1 の内容は、これらのシステム上のセクション 3M のマニュアルページで説明されています。この章の残りの部分では、libm.so.2 について説明します。動的リンクや、プログラムが実行されるときにどの共有オブジェクトがロードされるかを決定するオプションと環境変数の詳細については、ld(1) とコンパイラのマニュアルページを参照してください。

表 14 は、 libm 内の関数のリストを示しています。各数学関数について、この表では、倍精度バージョンの関数の名前のみを示しています。このライブラリには、同じ名前のあとに f が付いた単精度バージョンと、同じ名前のあとに l が付いた拡張/4 倍精度バージョンも含まれています。

表 14  libm の内容
種類
関数名
代数関数
cbrtfdimfmafmaxfminhypotsqrt
基本超越関数
asinacosatanatan2asinhacoshatanh, expexp2expm1powloglog1plog10log2sincossincostansinhcoshtanh
高級超越関数
j0j1jny0y1ynerferfcgammalgammagamma_rlgamma_rtgamma
整数丸め関数
ceilfloorllrintllroundlrintlroundmodfnearbyintrintroundtrunc
IEEE 規格で推奨される関数
copysignfmodilogbnextafterremainderscalbnfabs
IEEE 分類関数
isnan
旧式の浮動小数点関数
frexpldexplogbscalbsignificand
エラー処理ルーチン (ユーザー定義)
matherr
複素関数
cabscacoscacoshcargcasincasinhcatancatanhccosccoshcexpcimagclogconjcpowcprojcrealcsincsinhcsqrtctanctanh
C99 浮動小数点環境関数
feclearexceptfegetenvfegetexceptflagfegetprecfegetroundfeholdexceptferaiseexceptfesetenvfesetexceptflagfesetprecfesetroundfetestexceptfeupdateenv
浮動小数点例外処理関数
fex_getexcepthandlerfex_get_handlingfex_get_logfex_get_log_depthfex_log_entryfex_merge_flagsfex_setexcepthandlerfex_set_handlingfex_set_logfex_set_log_depth
その他の C99 関数
nannexttowardremquoscalbln

表 14 に関する次の情報に注意してください。

1. 関数 gamma_rlgamma_r は、gammalgamma の再入可能なバージョンです。

2. 関数 fegetprecfesetprec は、x86 システム上でのみ使用できます。これらの関数は、C99 規格では規定されていません。

3. libm 内の超越関数に関する誤差制限と監視される誤差は、libm(3LIB) のマニュアルページで表に示されています。

3.1.2 ベクトル数学ライブラリ

ライブラリ libmvec は、引数のベクトル全体に対して共通数学関数を評価するルーチンを提供します。アプリケーションが libmvec 内のこれらのルーチンを明示的に呼び出すか、または –xvector フラグが使用されたときにコンパイラがこれらのルーチンを呼び出すことがあります。

libmvec は、プライマリ共有オブジェクト libmvec.so.1、およびベクトル関数の一部またはすべての代替バージョンを提供する複数の補助共有オブジェクトとして実装されます。libmvec でリンクされたプログラムが実行されると、実行時リンカーは、ホストプラットフォーム上で最高のパフォーマンスを提供するバージョンを自動的に選択します。このため、libmvec 内の関数を使用するプログラムは、別のシステム上で実行されると若干異なる結果を示すことがあります。

表 15 は、libmvec 内の関数のリストを示しています。

表 15  libmvec の内容
種類
関数名
代数関数
vhypot_vhypotf_vrhypot_vrhypotf_vrsqrt_vrsqrtf_vsqrt_, vsqrtf_
指数関数および関連する関数
vexp_vexpf_vlog_vlogf_vpow_vpowf_
三角関数
vatan_vatanf_vatan2_vatan2f_vcos_vcosf_vsin_vsinf_vsincos_vsincosf_
複素関数
vc_abs_vc_exp_vc_log_vc_pow_vz_abs_vz_exp_vz_log_vz_pow_