GHC 7.0.3 запрещает показывать 2 ^ 1000 как нормализованный двойной вывод - бесконечность - PullRequest
2 голосов
/ 20 октября 2011

У меня есть следующий вывод - и я удивлен. Любая помощь, почему "мои двойники" кажутся такими низкими?

Prelude GHC.Float> floatRange (0.5e1000 :: Double)

(- 1021,1024)

Prelude GHC.Float> show (0.5e1000 :: Double)

"Бесконечность"

Показатель 1000, кажется, довольно далеко от предела 1024 (как я ожидал, что IEEE будет содержать это :: Double).

Буду признателен за вашу помощь.

Ответы [ 2 ]

7 голосов
/ 20 октября 2011

Скорее всего, floatRange возвращает диапазон показателя двоичного (base-2).Вы устанавливаете показатель 10 для основания 10, поэтому вы просите показатель 2 для достижения 3402 или около того.

4 голосов
/ 20 октября 2011

0.5e1000 не означает «2 ^ 1000».Это означает «0,5 * 10 ^ 1000», что на самом деле находится за пределами диапазона представимых значений двойной точности.

...