Можно ли использовать арифметику с плавающей запятой расширенной точности (80-битную) в GHC/Haskell?
В стандартном двойнике Хаскелла используется стандартная арифметика двойной точности:
data Double
Числа с плавающей запятой двойной точности. Желательно, чтобы этот тип был по меньшей мере равным по дальности и точности типу двойной точности IEEE.
Предлагает ли GHC/Haskell где-нибудь также числа с плавающей запятой с расширенной точностью (80-битные), возможно, с использованием некоторой внешней библиотеки?
1 ответ
Как указал Чафф, вы можете взглянуть на пакет номеров по взлому. Вы можете установить его с cabal install numbers
, Вот пример:
import Data.Number.CReal -- from numbers
main :: IO ()
main = putStrLn (showCReal 100 (sqrt 2))
-- output: 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727
Как говорится в документации, showCReal
возвращает строку с указанным номером типа CReal
с заданным количеством десятичных знаков.