
Hi all, I'm pleased to announce variable-precision-0.2: http://hackage.haskell.org/package/variable-precision There was no announcement for previous versions, as I quickly found their flaws to be too irritating in practice. --8<-- excerpt from the hackage page Software floating point with type-tagged variable mantissa precision, implemented using a strict pair of Integer and Int scaled alike to decodeFloat. Instances of the usual numeric type classes are provided, along with additional operators (with carefully chosen fixities) to coerce, adjust and reify precisions. --8<-- end excerpt Known shortcomings of this release: * no implementation of (inverse) (hyperbolic) trigonometric functions * no support for negative zero * no support for rounding modes * accuracy has not been extensively verified * termination of algorithms has not been proven The intention of this package is to be simple yet useable in the meantime until there is a version of hmpfr[1] or fixed-precision[2] that work without requiring a custom-compiled GHC. The design of variable-precision was inspired by the latter, and variable-precision is probably inferior, but the lifetime of the variable-precision package is hopefully going to be short. [1] http://hackage.haskell.org/package/hmpfr [2] http://hackage.haskell.org/package/fixed-precision I'm currently mainly using variable-precision for exploring the Mandelbrot Set, particularly in algorithms using Newton's method (for example, tracing external rays, where more precision is needed the closer you get to the boundary of the set). Thanks, Claude PS: --8<-- excerpt from ghci session Prelude Numeric.VariablePrecision> (pi :: F24) .@$ 200 $ show . (pi -) "1.5815072737072126433832795028841971693993751058209749096292229e-6" Prelude Numeric.VariablePrecision> (pi :: F53) .@$ 200 $ show . (pi -) "4.1192675685652988632476805983544532308209749096292228904414057e-15" Prelude Numeric.VariablePrecision> (2 :: F53) .@$ 200 $ show . log "0.69314718055994530941723212145817656807550013436025525413214402" Prelude Numeric.VariablePrecision> log 2 0.6931471805599453 Prelude Numeric.VariablePrecision> (2 :: F53) .@$ 200 $ show . exp "7.3890560989306502272304274605750078131803155705518473240869941" Prelude Numeric.VariablePrecision> exp 2 7.38905609893065 --8<-- end excerpt
participants (1)
-
Claude Heiland-Allen