Ответ 1
По существу, денормализованный поплавок имеет возможность представлять МАЛЫЙ (по величине) номер, который можно представить с помощью любое значение с плавающей запятой.
Это правильно.
с использованием денормализованных номеров поставляется со стоимостью производительности на многих платформах.
На разных процессорах штраф отличается, но он может достигать двух порядков. Причина? То же, что и для этого совета:
следует избегать перекрытия между нормализованными и денормализованными числами
Здесь ключ: denormals - это "микроформат" с фиксированной точкой в формате с плавающей запятой IEEE-754. В нормальных числах показатель показывает положение двоичной точки. Денормальные числа содержат последние 52 бита в нотации с фиксированной точкой с показателем 2 -1074 для удвоений.
Таким образом, денормалы медленны, потому что они требуют специальной обработки. На практике они встречаются очень редко, и производители чипов не любят тратить слишком много ценных ресурсов на редкие случаи.
Смешивание денормалов с нормалями происходит медленно, потому что вы смешиваете форматы, и у вас есть дополнительный шаг преобразования между ними.
Я думаю, что у меня всегда создается впечатление, что использование денормализованных цифры в большинстве случаев не очень хороши?
Денормалы были созданы для одной основной цели: постепенное переполнение. Это способ сохранить относительную разницу между маленькими числами. Если вы переходите от наименьшего нормального числа до нуля (резкое переполнение), относительное изменение бесконечно. Если вы перейдете к денормалам при недостаточном потоке, относительное изменение все еще не полностью точно, но, по крайней мере, более разумно. И эта разница проявляется в расчетах.
Иначе говоря. Числа с плавающей точкой равномерно распределены. Всегда существует одинаковое количество чисел между последовательными степенями двух: 2 52 (для двойной точности). Таким образом, без денормалов вы всегда получаете разрыв между 0 и наименьшим числом с плавающей запятой, который равен 2 52 раз размер разницы между наименьшими двумя числами. Денормалы равномерно заполняют этот зазор.
В качестве примера о влиянии резкого или постепенного нижнего потока рассмотрим математически эквивалентные x == y
и x - y == 0
. Если x
и y
являются крошечными, но разными, и вы используете резкое переполнение, тогда, если их разность меньше минимального значения отсечки, их разность будет равна нулю, и поэтому эквивалентность будет нарушена.
При постепенном переполнении разница между двумя крошечными, но разными нормальными числами становится денормальной, которая все еще не равна нулю. Эквивалентность сохраняется.
Таким образом, использование денормалов специально не рекомендуется, поскольку они были разработаны только как резервный механизм в исключительных случаях.