是否可以在GHC/Haskell中使用扩展精度(80位)浮点运算?

Pet*_*lák 15 floating-point haskell ghc floating-point-precision extended-precision

标准Haskell的Double使用标准的双精度算法:

data Double 双精度浮点数.希望这种类型在范围和精度上至少与IEEE双精度类型相同.

GHC/Haskell是否也提供扩展精度(80位)浮点数,也许使用一些外部库?

Mek*_*ire 14

正如chuff指出的那样,你可能想看看hackage上的数字包.你可以安装它cabal install numbers.这是一个例子:

import Data.Number.CReal -- from numbers

main :: IO ()
main = putStrLn (showCReal 100 (sqrt 2))

-- output: 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727
Run Code Online (Sandbox Code Playgroud)

文档所述,showCReal返回一个字符串,显示给定数量的类型CReal和给定的小数位数.

  • 我不认为他正在寻找任意精度,只是一种利用大多数流行处理器的80位浮点功能的方法. (6认同)
  • 是的,感谢指向 _numbers_ 的指针,它可能会派上用场,但现在我正在寻找 80 位浮点算法。 (2认同)