fpclassify(3)

ИМЯ
fpclassify, isfinite, isnormal, isnan, isinf - макросы классификации чисел с плавающей запятой

LIBRARY
Math library (libm, -lm)

СИНТАКСИС
#include <math.h>

int fpclassify(x);
int isfinite(x);
int isnormal(x);
int isnan(x);
int isinf(x);

    Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

fpclassify(), isfinite(), isnormal():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

isnan():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
        || _XOPEN_SOURCE
        || /* Since glibc 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

isinf():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
        || /* начиная с glibc 2.19: */ _DEFAULT_SOURCE
        || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ
У чисел с плавающей запятой есть специальные значения, например для бесконечности или 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

СТАНДАРТЫ
C11, POSIX.1-2008.

ИСТОРИЯ
POSIX.1-2001, C99.

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

ЗАМЕЧАНИЯ
Про isinf() в стандартах лишь сказано, что этот макрос возвращает ненулевое значение, если только аргумент равен бесконечности.

СМ. ТАКЖЕ
finite(3), INFINITY(3), isgreater(3), signbit(3)

ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 (https://www.gnu.org/licenses/gpl-3.0.html) или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.