[Haskell-cafe] ANN: AERN-Real-Double-2011.1
mikkonecny at googlemail.com
Fri May 13 17:55:45 CEST 2011
I am pleased to announce the first release of
(a large part of) a newly designed AERN.
AERN (approximating exact real numbers) is a set of
Haskell libraries providing arbitrary precision interval arithmetic,
polynomial arithmetic and distributed lazy exact real computation.
Anyone is welcome to join in the development
of AERN via http://code.google.com/p/aern/ .
This release contains the following features:
* Type classes for rounded arithmetic and rounded interval arithmetic
with explicit control of rounding direction
and the possibility to increase the rounding precision
arbitrarily for types that support it.
For example, type classes for types with rounded addition,
multiplication, exponentiation etc.
* Over 150 QuickCheck properties for these type classes,
such as associativity of multiplication modulo rounding.
* Interval arithmetic using Double endpoints, rounded
outwards or inwards. Outwards rounding allows to safely
approximate exact real arithmetic while a combination
of both outwards and inwards rounding allows one
to safely approximate exact interval arithmetic.
Inverted intervals with Kaucher arithmetic are also supported.
* For most of the type classes there are also in-place
versions that act in the ST monad on mutable variables
containing numbers or intervals. This facilitates
some explicit memory allocation optimisation, especially
for data on the C heap.
The best starting point for experimenting with these
features are the demo programs included in the bundle
and the documentation for the AERN-Real-Double
(The HackageDB page does not have Haddock documentation
because AERN fails to build with ghc 7.0.* due to a compiler bug.)
The following features are planned for future releases:
* Interval arithmetic with MPFR arbitrary precision endpoints.
* Polynomial interval arithmetic with an optimised C core
* Distributed exact real and geometric computation with lazy
For those familiar with the old AERN design, the main changes
in the new design are:
* use of many smaller type classes instead of few large ones
* use of associated types instead of multi-parameter type classes
* a much more systematic approach to representing the numerical
order on real numbers and the information refinement
(ie the inverse set inclusion) order on intervals
* ability to specify different effort indicator types for each
type of operation and each numerical type instead of Int.
(For example, Double has () as its effort indicator for almost
all operations while MPFR will have Precision
as the effort indicator type.)
* a more systematic approach to specifying QuickCheck properties
and applying them to form test suites
* a unified implementation of interval elementary operations (only sqrt and exp
at the moment) that is efficient when applied to Double intervals
as well as polynomial intervals
* new support for in-place rounded numerical operations
The current development team will be grateful for any feedback and suggestions.
|o| Michal Konecny <mikkonecny at gmail.com>
|o| office: (+42) (0)121 204 3462
|o| PGP key http://www-users.aston.ac.uk/~konecnym/ki.aston
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 198 bytes
Desc: This is a digitally signed message part.
More information about the Haskell-Cafe