3.1.1 標準数学ライブラリ
Oracle Solaris の標準数学ライブラリ libm には、Oracle Solaris オペレーティング環境が準拠しているさまざまな標準に必要な基本数学関数とサポートルーチンが含まれています。
Oracle Solaris 10 OS には、libm の 2 つのバージョンである libm.so.1 と libm.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) とコンパイラのマニュアルページを参照してください。
Table 3–1 は、libm 内の関数のリストを示しています。 各数学関数について、この表では、倍精度バージョンの関数の名前のみを示しています。このライブラリには、同じ名前のあとに f が付いた単精度バージョンと、同じ名前のあとに l が付いた拡張/4 倍精度バージョンも含まれています。
表 3-1 libm の内容
|
|
代数関数 |
cbrt、fdim、fma、fmax、fmin、hypot、sqrt |
基本超越関数 |
asin、acos、atan、atan2、asinh、acosh、atanh, exp、exp2、expm1、pow、log、log1p、log10、log2、sin、cos、sincos、tan、sinh、cosh、tanh |
高級超越関数 |
j0、j1、jn、y0、y1、yn、erf、erfc、gamma、lgamma、gamma_r、lgamma_r、tgamma |
整数丸め関数 |
ceil、floor、llrint、llround、lrint、lround、modf、nearbyint、rint、round、trunc |
IEEE 規格で推奨される関数 |
copysign、fmod、ilogb、nextafter、remainder、scalbn、fabs |
IEEE 分類関数 |
isnan |
旧式の浮動小数点関数 |
frexp、ldexp、logb、scalb、significand |
エラー処理ルーチン (ユーザー定義) |
matherr |
複素関数 |
cabs、cacos、cacosh、carg、casin、casinh、catan、catanh、ccos、ccosh、cexp、cimag、clog、conj、cpow、cproj、creal、csin、csinh、csqrt、ctan、ctanh |
C99 浮動小数点環境関数 |
feclearexcept、fegetenv、fegetexceptflag、fegetprec、fegetround、feholdexcept、feraiseexcept、fesetenv、fesetexceptflag、fesetprec、fesetround、fetestexcept、feupdateenv |
浮動小数点例外処理関数 |
fex_getexcepthandler、fex_get_handling、fex_get_log、fex_get_log_depth、fex_log_entry、fex_merge_flags、fex_setexcepthandler、fex_set_handling、fex_set_log、fex_set_log_depth |
その他の C99 関数 |
nan、nexttoward、remquo、scalbln |
|
Table 3–1 について、次の点に注意してください。
1. 関数 gamma_r と lgamma_r は、gamma と lgamma の再入可能なバージョンです。
2. 関数 fegetprec と fesetprec は、x86 システム上でのみ使用できます。これらの関数は、C99 規格では規定されていません。
3. libm 内の超越関数に関する誤差制限と監視される誤差は、libm(3LIB) のマニュアルページで表に示されています。