Manpages

名 前

fpclassify, isfinite, isnormal, isnan, isinf − 浮 動 小 数 点 数 の 分 類 マ ク ロ

書 式

#include <math.h>

int fpclassify(x);

int isfinite(x);

int isnormal(x);

int isnan(x);

int isinf(x);

−lm で リ ン ク す る 。

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

fpclassify(), isfinite(), isnormal():

_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc −std=c99

isnan():

_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc −std=c99

isinf():

_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc −std=c99

説 明

浮 動 小 数 点 数 は 無 限 大 や NaN の よ う な 特 別 な 値 を 持 つ こ と が で き る 。 マ ク ロ fpclassify(x)x が ど の よ う な 種 別 か を 知 る こ と が で き る 。 マ ク ロ は 任 意 の 浮 動 小 数 点 数 表 現 を 引 き 数 と し て と る こ と が で き る 。 結 果 は 以 下 の 値 の い ず れ か 一 つ で あ る :

FP_NAN

x が "Not a Number" で あ る (数 値 で は な い )。

FP_INFINITE

x が 正 の 無 限 大 ま た は 負 の 無 限 大 で あ る 。

FP_ZERO

x が 0 で あ る 。

FP_SUBNORMAL

x を 正 規 化 形 式 で 表 現 す る に は 小 さ す ぎ る 。

FP_NORMAL

上 記 の ど れ に も 当 て は ま ら な い 場 合 で あ り 、 値 は 通 常 の 浮 動 小 数 点 数 で あ る は ず だ 。 他 の マ ク ロ は 、 い く つ か の 標 準 的 な 問 い に 対 し て 、 簡 単 な 答 え を 提 供 す る 。

isfinite(x) 以 下 の 場 合 に

0 以 外 の 値 を 返 す 。

(fpclassify(x) != FP_NAN && fpclassify(x) != FP_INFINITE)

isnormal(x)

(fpclassify(x) == FP_NORMAL) の 場 合 に 0 以 外 の 値 を 返 す 。

isnan(x)

(fpclassify(x) == FP_NAN) の 場 合 に 0 以 外 の 値 を 返 す 。

isinf(x)

x が 正 の 無 限 大 の 場 合 は 1 を 、 負 の 無 限 大 の 場 合 は −1 を 返 す 。

属 性

マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 ) マ ク ロ fpclassify(), isfinite(), isnormal(), isnan(), isinf() は ス レ ッ ド セ ー フ で あ る 。

準 拠

C99, POSIX.1.

isinf() に 関 し て 、 標 準 規 格 で 定 め ら れ て い る の は 、 返 り 値 が 0 以 外 に な る の は 引 き 数 が 無 限 大 の 場 合 だ け と い う こ と だ け で あ る 。

注 意

glibc 2.01 以 前 で は 、 isinf() は x が 正 の 無 限 大 か 負 の 無 限 大 の 場 合 、 0 以 外 の 値 (実 際 に は 1) を 返 す (C99 の 要 求 仕 様 で 決 ま っ て い る の は 0 以 外 の 値 を 返 す と い う こ と だ け で あ る )。

関 連 項 目

finite(3), INFINITY(3), isgreater(3), signbit(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。