altfloat: Alternative floating point support for GHC.

[ library, numerical ] [ Propose Tags ]

A replacement for the standard Haskell floating point types and supporting functions. There are a number of shortcomings which I feel severely hinder Haskell's utility for numerical computation. These shortcomings include

  • There is no way to sanely convert between Haskell's floating types -- not even between Double and CDouble. The implementation of the realToFrac function goes through Rational, which loses information as Rational cannot represent all floating point values.

  • Making floating types an instance of Ord makes no sense. Ord is for totally ordered data types, which floats are not. As a result, a number of library functions (such as max and sort) produce nonsensical results.

  • The Enum instance for floating types similarly makes little sense. While fromEnum and toEnum functions use Int instead of Integer, limiting their usefulness, pred and succ can be defined in a much more useful way.

  • Functions that should care about negative zeros, such as signum and abs, do not.

  • Some functions, such as floor, have nonsensical behaviour for non-finite input.

  • The selection of floating point library functions pales in comparison to C. This problem is made worse since, as noted above, it is impossible to convert losslessly from Double to CDouble in order to use the FFI.

  • There is no mechanism for handling rounding modes or exceptions.

This package is intended to address all of the above issues, and more. Also provided, for convenience, is an alternative to the standard Prelude which includes features from this library and the non-overlapping parts of the standard Prelude.


Automatic Flags

Use the new split integer packages that come with GHC 6.12.


Use the integer-gmp package as opposed to integer-simple.


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.2, 0.2.1, 0.2.2, 0.3, 0.3.1
Dependencies base (>=4 && <5), ghc-prim, integer, integer-gmp, integer-simple [details]
License LicenseRef-OtherLicense
Author Nick Bowler
Category Numerical
Home page
Source repo head: git clone git://
Uploaded by NickBowler at 2010-02-21T00:02:48Z
Distributions NixOS:0.3.1
Downloads 4172 total (22 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]