fpclassify, isfinite, isnormal, isnan, isinf -
макросы
классификации
чисел с
плавающей
запятой
Math library (
libm,
-lm)
#include <math.h>
int fpclassify(x);
int isfinite(x);
int isnormal(x);
int isnan(x);
int isinf(x);
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 |
POSIX.1-2001, POSIX.1-2008, C99.
Про
isinf() в
стандартах
лишь
сказано,
что этот
макрос
возвращает
ненулевое
значение,
если
только
аргумент
равен
бесконечности.
В glibc 2.01 и более
ранних
isinf()
возвращает
ненулевое
значение (а
именно 1),
если
x
равно
положительной
или
отрицательной
бесконечности
(это всё, что
требует C99).
finite(3),
INFINITY(3),
isgreater(3),
signbit(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]