logb

Autres langues

Langue: ja

Version: 2007-07-26 (fedora - 25/11/07)

Section: 3 (Bibliothèques de fonctions)

名前

logb, logbf, logbl - 浮動小数点数の指数を取得する

書式

#include <math.h>

double logb(double x);
float logbf(float x);
long double logbl(long double x);

-lm でリンクする。

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

logb(), logbf(), logbl(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE; or cc -std=c99

説明

これらの関数は x の指数を抽出し、浮動小数点数として返す。 FLT_RADIX が 2 の場合、 logb(x)floor(log2(x)) と等しいが、後者の方がたぶん高速である。

x が正規化されていない場合、 logb() は x が正規化された場合の指数を返す。

x が 0 の場合、-HUGE_VAL, -HUGE_VALF, -HUGE_VALL がそれぞれ返されて、極 (pole) によるエラーが起きる。 x が無限大の場合、正の無限大が返される。 x が NaN の場合、NaN が返される。

エラー

エラーをチェックするためには、これらの関数を呼び出す前に errno を 0 に設定し、 feclearexcept(FE_ALL_EXCEPT) を呼び出す。 これらの関数から返った後で、 errno が 0 以外または fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) が 0 以外になっている場合は、エラーが起きている。

エラーが起きていて、かつ (math_errhandling & MATH_ERRNO) が 0 以外の場合、 errnoERANGE に設定される。 エラーが起きていて、かつ (math_errhandling & MATH_ERREXCEPT) が 0 以外の場合、0 で割ったことによる浮動小数点数の例外が発生する。

x が 0 の場合、極によるエラーが起きる。

準拠

C99

関連項目

log(3), ilogb(3)