Изменения

Перейти к: навигация, поиск

Представление чисел с плавающей точкой

2621 байт добавлено, 06:16, 9 декабря 2011
Денормализованные числа
=== Денормализованные числа ===
Денормализованные (''denormalized numbers'') - способ увеличить количество представимых числе в окрестности нуля. Каждое такое число по модулю меньше самого маленького нормализованного.<
Согласно стандарту числа с плавающей точкой можно представить в следующем виде:
* <tex> (-1)^s \times 1.M \times 2^E </tex>, в нормализованном виде если <tex> E_{min} \leq E \leq E_{max} </tex>,
* <tex> (-1)^s \times 0.M \times 2^E_{min} </tex>, в денормализованном виде если <tex> E = E_{min} - 1 </tex>,
где <tex> E_{min} </tex> - минимальное значение порядка, используемое для записи чисел (единичный сдвиг), <tex> E_{min} - 1 </tex> - минимальное значение порядка, которое он может принимать - все биты нули, нулевой сдвиг.
 
Ввиду сложности, денормализованные числа обычно реализуют на программном уровне, а не на аппаратном. Из-за этого резко возрастает время работы с ними. Это недопустимо в областях, где требуется большая скорость вычислений (например, видеокарты).
Так как денормализованные числа представляют числа мало отличные от нуля и мало влияют на результат, зачастую они игнорируются (что резко повышает скорость). При этом используются две концепции:
# ''Flush To Zero (FTZ)'' - в качестве результата возвращается нуль, как только становится понятно, что результат будет представляться в денормализованном виде.
# ''Denormals Are Zero (DAZ)'' - денормализованные числа, поступающие на вход, рассматриваются как нули.
 
Начиная с версии стандарта IEEE 754 2008 года денормализованные числа называются "субнормальными" (''subnormal numbers''), то есть числа, меньшие "нормальных".
== Машинная эпсилон ==
272
правки

Навигация