Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/comius/haskell-fast-reals
A fast implementation of real numbers in Haskell
https://github.com/comius/haskell-fast-reals
Last synced: 2 months ago
JSON representation
A fast implementation of real numbers in Haskell
- Host: GitHub
- URL: https://github.com/comius/haskell-fast-reals
- Owner: comius
- License: bsd-2-clause
- Created: 2015-07-27T17:52:50.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2019-03-25T16:34:03.000Z (almost 6 years ago)
- Last Synced: 2023-03-24T06:00:22.654Z (almost 2 years ago)
- Language: Haskell
- Size: 110 KB
- Stars: 9
- Watchers: 4
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A library for computing with exact real numbers in Haskell.
## Prerequisites
* A generally working development environment (`make`, `gcc`)
* Probably the [GMP](https://gmplib.org) header files.
* Haskell version 7.8.4, including Cabal
* The [haskell-mpfr](https://github.com/comius/haskell-mpfr) library by [Ivo List](https://github.com/comius).The MPFR Haskell bindings in the haskell-mpfr library rely on low-level implementation details
of Haskell. It is likely they will break with newer versions of Haskell.## Installation & Usage
1. Install the haskell-mpfr library, following the instructions there. Essentially, it is just a `cabal install` inside the haskell-mpfr source directory.
2. To install the library, run
cabal install
To get a version of the library which allows profiling, use instead
cabal install --ghc-option=-fprof-auto -p --enable-executable-profiling
3. Alternatively to the previous step, you can run
cabal repl
to get an interactive shell with the library preloaded. This way you can try out the
library without installing it.4. To create HTML documentation run
cabal haddock
The generated HTML files will be placed in `dist/doc/html/`.
## Example
Here is an example session.
Preprocessing library haskell-fast-reals-0.1.0.0...
GHCi, version 7.8.4: http://www.haskell.org/ghc/ :? for help
<... stuff gets loaded ...>
*Data.Reals.Reals> let a = 1.3 :: RealNum
*Data.Reals.Reals> a*(1-a)
[-3.900000000007822e-1,-3.899999999994179e-1]
*Data.Reals.Reals> a / a
[9.999999999972715e-1,1.000000000001819]
*Data.Reals.Reals> let b = 2.7 :: RealNum
*Data.Reals.Reals> a * a - b * b - (a + b) * (a - b)
[-3.128661774106285e-12,4.147295840103611e-12]
*Data.Reals.Reals> a * a
[1.689999999996871,1.690000000004147]
*Data.Reals.Reals> approx (a * a) (precUp 100)
[1.69,1.69]
λ> let int = (ClosedInterval (appFromInteger 0,appFromInteger 1))
λ> forall int $ \x -> (x * (1 - x)) `less` (0.24 :: RealNum )
False
λ> forall int $ \x -> (x * (1 - x)) `less` (0.26 :: RealNum )
True