Можно ли использовать арифметику с плавающей запятой расширенной точности (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 с заданным количеством десятичных знаков.

Другие вопросы по тегам