Linux Man на русском

  User    Syst    Libr    Device    Files    Other    Admin  



   isnan - макросы классификации чисел с

isnan(3) макросы классификации чисел с

Other Alias

fpclassify, isfinite, isnormal, 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;
или cc -std=c99 isnan():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
или cc -std=c99 isinf():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
или cc -std=c99


ОПИСАНИЕ

У чисел с плавающей запятой есть специальные значения, например для бесконечности или NaN. С помощью макроса fpclassify(x) вы можете выяснить тип x. В качестве аргумента макрос принимает любое выражение с плавающей запятой. Результатом будет одно из следующих значений:

FP_NAN Значение x не является числом («Not a Number»).

FP_INFINITE Значение x стремится к плюс или минус бесконечности.

FP_ZERO Значение x равно нулю.

FP_SUBNORMAL Значение x слишком мало для представления в нормализованном формате.

FP_NORMAL Если значение не равно ни одному из вышеперечисленных, то это обычное число с плавающей запятой.

Остальные макросы предоставляют короткие ответы на некоторые стандартные вопросы.

isfinite(x) возвращает ненулевое значение, если
(fpclassify(x) != FP_NAN && fpclassify(x) != FP_INFINITE)

isnormal(x) возвращает ненулевое значение, если (fpclassify(x) == FP_NORMAL)

isnan(x) возвращает ненулевое значение, если (fpclassify(x) == FP_NAN)

isinf(x) возвращает 1, если x равно положительной бесконечности и -1, если x равно отрицательной бесконечности.


АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
fpclassify(), isfinite(), isnormal(), isnan(), isinf() безвредность в потоках: безвредно (MT-Safe)


СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001, POSIX.1-2008, C99.

Про isinf() в стандартах лишь сказано, что этот макрос возвращает ненулевое значение, если только аргумент равен бесконечности.


ЗАМЕЧАНИЯ

В glibc 2.01 и более ранних isinf() возвращает ненулевое значение (а именно 1), если x равно положительной или отрицательной бесконечности (это всё, что требует C99).