Почему наибольшее представимое число IEEE с плавающей точкой меньше 1 отличается от 1 на половину машинного эпсилона? - PullRequest
0 голосов
/ 11 мая 2018

Мы можем представить 1.0 как 2 ^ 0 x 1.0, а наибольшее представимое число, меньшее 1.0, как k, где k = 2 ^ 0 x 0.111 ....... 1, усеченный до соответствия.

Тогда разница или ulp для 1,0 - k = 2 ^ 0 x 0,00000 ..... 1.

Разве это не то же самое, что машинный эпсилон, где мы имеем N эпсилон = 2 ^ 0 х 1,000000 .... 1 - 2 ^ 0 х 1000 = = 2 ^ 0 х 0,000 ..... 1?

Почему правильное значение равно половине?

Кроме того, как рассчитать ulp для значений, отличных от 1.0?

1 Ответ

0 голосов
/ 11 мая 2018

Конечное число с плавающей запятой представляется в виде знака (+ или -), фиксированного числа n + 1 цифр d 0 , d −1 , d -2 , d - n , в некоторой базе b и показатель степени e так, что представленное число равно знак d 0 .d -1 d -2 … d - n × b e . Для этого ответа мы берем знак как + и b как 2.

С этим представлением:

  • 1 равно + 1,00… 0 × 2 0 .
  • Следующее число больше 1: + 1,00… 1 × 2 0 . Поскольку цифра d - n увеличилась на 1, она превышает 1 на 2 0− n .
  • Следующее число меньше 1: + 1,11… 1 × 2 −1 . Обратите внимание, что показатель степени уменьшился. Это означает, что ее цифра d - n на самом деле имеет значение 2 -1 - n . Таким образом, оно отличается от 1 только на 2 -1 - n , а не на 2 0 - n .

Для любого обычного числа с плавающей точкой ULP составляет b e - n . Однако вблизи нижних границ формата с плавающей запятой IEEE 754 имеет ненормальные числа, и ULP ограничивается значением b emin - n .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...