Is it possible to use extended precision (80-bit)

2019-03-24 12:24发布

问题:

The standard Haskell's Double uses the standard double-precision arithmetic:

data Double Double-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE double-precision type.

Does GHC/Haskell offer somewhere also the extended precision (80-bit) floating point numbers, perhaps using some external library?

回答1:

As chuff has pointed out, you might want to take a look a the numbers package on hackage. You can install it with cabal install numbers. Here is an example:

import Data.Number.CReal -- from numbers

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

-- output: 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727

As the documentation states, showCReal returns a string showing a given number of type CReal with the given number of decimals.