# AERN-Real: datatypes and abstractions for approximating exact real numbers

Datatypes and abstractions for approximating exact real numbers and a basic arithmetic over such approximations. The design is inspired to some degree by Mueller's iRRAM and Lambov's RealLib (both are C++ libraries for exact real arithmetic).

Abstractions are provided via 4 type classes:

ERRealBase: abstracts floating point numbers

ERApprox: abstracts neighbourhoods of real numbers

ERIntApprox: abstracts neighbourhoods of real numbers that are known to be intervals

ERApproxElementary: abstracts real number approximations that support elementary operations

For ERRealBase we give several implementations. The default is an arbitrary precision floating point type that uses Double for lower precisions and an Integer-based simulation for higher precisions. Rational numbers can be used as one of the alternatives. Augustsson's Data.Number.BigFloat can be easily wrapped as an instance of ERRealBase except that it uses a different method to control precision.

ERIntApprox is implemented via outwards-rounded arbitrary precision interval arithmetic. Any instance of ERRealBase can be used for the endpoints of the intervals.

ERApproxElementary is implemented generically for any implementation of ERIntApprox. This way some of the most common elementary operations are provided, notably: sqrt, exp, log, sin, cos, atan. These operations converge to an arbitrary precision and also work well over larger intervals without excessive wrapping.

There is also some support for generic Taylor series, interval Newton method and simple numerical integration.

Versions [faq] | 0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.9.3.1, 0.9.4, 0.9.5, 0.9.6, 0.9.6.1, 0.9.7, 0.9.7.1, 0.9.7.2, 0.9.8, 0.9.9, 0.10.0, 0.10.0.1, 0.10.0.2, 2011.1, 2011.1.0.1 |
---|---|

Dependencies | base, binary (>=0.4), containers [details] |

License | BSD-3-Clause |

Copyright | (c) 2007-2008 Michal Konecny, Amin Farjudian, Jan Duracz |

Author | Michal Konecny |

Maintainer | Michal Konecny |

Category | Data, Math |

Uploaded | by MichalKonecny at Fri Jul 11 15:51:46 UTC 2008 |

Distributions | NixOS:2011.1.0.1 |

Downloads | 10814 total (219 in the last 30 days) |

Rating | (no votes yet) [estimated by rule of succession] |

Your Rating | |

Status | Docs not available [build log] All reported builds failed as of 2017-01-03 [all 7 reports] |

## Modules

*Data**Number*- Data.Number.ER
- Data.Number.ER.BasicTypes
- Data.Number.ER.ExtendedInteger
- Data.Number.ER.Misc
- Data.Number.ER.PlusMinus
- Data.Number.ER.Real
- Data.Number.ER.Real.Approx
- Data.Number.ER.Real.Approx.Elementary
- Data.Number.ER.Real.Approx.Interval
- Data.Number.ER.Real.Approx.Sequence

*Arithmetic*- Data.Number.ER.Real.Arithmetic.Elementary
- Data.Number.ER.Real.Arithmetic.Integration
- Data.Number.ER.Real.Arithmetic.Newton
- Data.Number.ER.Real.Arithmetic.Taylor

- Data.Number.ER.Real.Base
- Data.Number.ER.Real.Base.CombinedMachineAP
- Data.Number.ER.Real.Base.Float
- Data.Number.ER.Real.Base.MachineDouble
- Data.Number.ER.Real.Base.Rational

- Data.Number.ER.Real.DefaultRepr

- Data.Number.ER.Real.Approx

- Data.Number.ER

## Flags

Name | Description | Default | Type |
---|---|---|---|

containers-in-base | Enabled | Automatic |

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

## Downloads

- AERN-Real-0.9.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)