21 Language support library [language.support]

21.3 Implementation properties [support.limits]

21.3.4 Class template numeric_­limits [numeric.limits]

21.3.4.1 numeric_­limits members [numeric.limits.members]

Каждая функция-член, определенная в этом подпункте, является signal-safe ([csignal.syn]).

static constexpr T min() noexcept;

Минимальное конечное значение.188

Для типов с плавающей запятой с субнормальными числами возвращает минимальное положительное нормализованное значение.

Имеет значение для всех специализаций, в которых is_­bounded != false, или is_­bounded == false && is_­signed == false.

static constexpr T max() noexcept;

Максимальное конечное значение.189

Имеет значение для всех специализаций, в которых is_­bounded != false.

static constexpr T lowest() noexcept;

Конечное значениеx такое, что не существует другого конечного значенияy гдеy < x.190

Имеет значение для всех специализаций, в которыхis_­bounded != false.

static constexpr int digits;

Количество radix цифр, которое можно представить без изменений.

Для целочисленных типов - количество битов без знака в представлении.

Для типов с плавающей запятой - количествоradix цифр в мантиссе.191

static constexpr int digits10;

Количество десятичных разрядов, которое может быть представлено без изменений.192

Имеет значение для всех специализаций, в которых is_­bounded != false.

static constexpr int max_digits10;

Количество десятичных разрядов, необходимое для того, чтобы всегда различать различающиеся значения.

Имеет значение для всех типов с плавающей запятой.

static constexpr bool is_signed;

true если тип подписан.

Имеет значение для всех специализаций.

static constexpr bool is_integer;

true если тип целочисленный.

Имеет значение для всех специализаций.

static constexpr bool is_exact;

true если тип использует точное представление. Все целочисленные типы являются точными, но не все точные типы являются целыми числами. Например, рациональные представления и представления с фиксированным показателем являются точными, но не целочисленными.

Имеет значение для всех специализаций.

static constexpr int radix;

Для типов с плавающей запятой указывает основание или основание системы счисления экспоненты (часто 2).193

Для целочисленных типов указывает основу представления.194

Имеет значение для всех специализаций.

static constexpr T epsilon() noexcept;

Машинный эпсилон: разница между 1 и наименьшим представимым значением больше 1.195

Имеет значение для всех типов с плавающей запятой.

static constexpr T round_error() noexcept;

Мера максимальной ошибки округления.196

static constexpr int min_exponent;

Минимальное отрицательное целое число, radix возведенное в степень на единицу меньше этого целого, является нормализованным числом с плавающей запятой.197

Имеет значение для всех типов с плавающей запятой.

static constexpr int min_exponent10;

Минимальное отрицательное целое число, при котором 10 в этой степени находится в диапазоне нормализованных чисел с плавающей запятой.198

Имеет значение для всех типов с плавающей запятой.

static constexpr int max_exponent;

Максимальное положительное целое число, radix возведенное в степень на единицу меньше этого целого, является представимым конечным числом с плавающей запятой.199

Имеет значение для всех типов с плавающей запятой.

static constexpr int max_exponent10;

Максимальное положительное целое число, такое, что 10 в этой степени находится в диапазоне представимых конечных чисел с плавающей запятой.200

Имеет значение для всех типов с плавающей запятой.

static constexpr bool has_infinity;

true если тип имеет представление для положительной бесконечности.

Имеет значение для всех типов с плавающей запятой.

Должен быть true для всех специализаций, в которых is_­iec559 != false.

static constexpr bool has_quiet_NaN;

true если тип имеет представление для тихого (не сигнализирующего) «Not a Number».201

Имеет значение для всех типов с плавающей запятой.

Должен быть true для всех специализаций, в которых is_­iec559 != false.

static constexpr bool has_signaling_NaN;

true если тип имеет представление для сигнализации «Not a Number».202

Имеет значение для всех типов с плавающей запятой.

Должен быть true для всех специализаций, в которых is_­iec559 != false.

static constexpr float_denorm_style has_denorm;

denorm_­present если тип допускает субнормальные значения (переменное количество битов экспоненты)203, denorm_­absent если тип не допускает субнормальных значений, и denorm_­indeterminate если он не определен во время компиляции, допускает ли тип субнормальные значения.

Имеет значение для всех типов с плавающей запятой.

static constexpr bool has_denorm_loss;

true если потеря точности определяется как потеря денормализации, а не как неточный результат.204

static constexpr T infinity() noexcept;

Представление положительной бесконечности, если доступно.205

Имеет значение для всех специализаций, для которых has_­infinity != false. Обязателен в специализациях, для которых is_­iec559 != false.

static constexpr T quiet_NaN() noexcept;

Представление тихого «Не числа», если доступно.206

Имеет значение для всех специализаций, для которых has_­quiet_­NaN != false. Обязателен в специализациях, для которых is_­iec559 != false.

static constexpr T signaling_NaN() noexcept;

Отображение сигнализации «Не число», если таковая имеется.207

Имеет значение для всех специализаций, для которых has_­signaling_­NaN != false. Обязателен в специализациях, для которых is_­iec559 != false.

static constexpr T denorm_min() noexcept;

Минимальное положительное субнормальное значение.208

Имеет значение для всех типов с плавающей запятой.

В специализациях, для которых has_­denorm == falseвозвращает минимальное положительное нормализованное значение.

static constexpr bool is_iec559;

true тогда и только тогда, когда тип соответствует ISO / IEC / IEEE 60559.209

Имеет значение для всех типов с плавающей запятой.

static constexpr bool is_bounded;

true если набор значений, представимых типом, конечно.210 [ Note: Все фундаментальные типы ([basic.fundamental]) ограничены. Этот член предназначенfalse для типов произвольной точности. ]end note

Имеет значение для всех специализаций.

static constexpr bool is_modulo;

true если тип по модулю.211 Тип определяется по модулю, если для любой операции с участием+,-или * со значениями этого типа, результат которых выходит за пределы диапазона [min(), max()], возвращаемое значение отличается от истинного значения на целое число, кратноеmax() - min() + 1.

[ Example: is_­modulo предназначенfalse для целочисленных типов со знаком ([basic.fundamental]), если реализация, как расширение этого международного стандарта, не определяет целочисленное переполнение со знаком для переноса. ]end example

Имеет значение для всех специализаций.

static constexpr bool traps;

true если при запуске программы существует значение типа, которое вызовет арифметическую операцию с использованием этого значения для перехвата.212

Имеет значение для всех специализаций.

static constexpr bool tinyness_before;

true если крошечность обнаружена до округления.213

Имеет значение для всех типов с плавающей запятой.

static constexpr float_round_style round_style;

Стиль округления для шрифта.214

Имеет значение для всех типов с плавающей запятой. Должны возвращаться специализации для целочисленных типов round_­toward_­zero.

ЭквивалентCHAR_­MIN,SHRT_­MIN, FLT_­MIN,DBL_­MINи т.д.

ЭквивалентCHAR_­MAX,SHRT_­MAX, FLT_­MAX,DBL_­MAXи т.д.

lowest() необходимо, потому что не все представления с плавающей запятой имеют наименьшее (наиболее отрицательное) значение, которое является отрицательным из наибольшего (наиболее положительного) конечного значения.

ЭквивалентFLT_­MANT_­DIG,DBL_­MANT_­DIG, LDBL_­MANT_­DIG.

ЭквивалентFLT_­DIG,DBL_­DIG, LDBL_­DIG.

ЭквивалентноFLT_­RADIX.

Различает типы с основанием, отличным от 2 (например, BCD).

ЭквивалентFLT_­EPSILON,DBL_­EPSILON,LDBL_­EPSILON.

Ошибка округления описана в разделе 5.2.4 LIA-1 и разделе C.5.2.4 «Обоснование» приложения C. - Округление и константы округления.

ЭквивалентFLT_­MIN_­EXP,DBL_­MIN_­EXP, LDBL_­MIN_­EXP.

Эквивалент FLT_­MIN_­10_­EXP,DBL_­MIN_­10_­EXP,LDBL_­MIN_­10_­EXP.

ЭквивалентFLT_­MAX_­EXP, DBL_­MAX_­EXP,LDBL_­MAX_­EXP.

Эквивалент FLT_­MAX_­10_­EXP,DBL_­MAX_­10_­EXP,LDBL_­MAX_­10_­EXP.

Требуется LIA-1.

Требуется LIA-1.

Требуется LIA-1.

См. ISO / IEC / IEEE 60559.

Требуется LIA-1.

Требуется LIA-1.

Требуется LIA-1.

Требуется LIA-1.

ISO / IEC / IEEE 60559: 2011 совпадает с IEEE 754-2008.

Требуется LIA-1.

Требуется LIA-1.

Требуется LIA-1.

См. ISO / IEC / IEEE 60559. Требуется LIA-1.

ЭквивалентноFLT_­ROUNDS. Требуется LIA-1.