My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
Main  
AERN Wiki main page
Updated Apr 3, 2012 by MikKonecny@gmail.com

(This project is under construction)

Goals

  • provide arbitrary precision interval arithmetic to enable validated and exact computation
  • provide arbitrary precision arithmetic of polynomial intervals to
    • automatically reduce dependency overestimations in interval computation
    • efficiently support validated numerical integration
  • provide abstract data types (ADTs) for validated and exact computation to
    • facilitate loose coupling to a backend implementation to the level that one can transparently switch backends (eg MPFR vs machine Double)
    • explicitly support a cleaner programming style due to inaccessibility of some low-level operations (eg interval endpoints can be hidden)
    • explicitly declare the data types as instances of (extensions of) established mathematical structures and provide established mathematical notation for working with them (eg posets, dcpo bases, lattices)
  • provide a framework for distributed dataflow exact numerical computation with tidy exact semantics based on Domain Theory

This paper describes the main ADT of real number approximations and contains the following figure, which gives an overview of the main ADTs in AERN:

Design

The code is split into the following Cabal projects:

  • aern-order: defines numeric order, refinement order, lattice operations, effort indicators, mutability
status: old version 2011.1.0.1; haddock: current
  • aern-real: defines field and elementary operations rounded either upwards/downwards in a numerical ordering or inwards/outwards in an approximation refinement ordering
status: old version 2011.1.0.1; haddock: current
  • aern-interval: defines a generalised interval datatype, implementing common real operations rounded inwards or outwards with respect to interval refinement
status: old version 2011.1.0.1; haddock: current
  • aern-double: makes machine Double an instance of aern-real classes and thus enables the use of Double as aern-interval endpoints
status: old version 2011.1.0.2; haddock: current
  • aern-mpfr: makes MPFR arbitrary-precision numbers an instance of aern-real classes and thus enables the use of MPFR numbers as aern-interval endpoints
status: will release soon, currently needs a slightly modified ghc; haddock: current
  • aern-realfn: defines various classes of approximations to continuous and differentiable functions
status: under construction; haddock: current very old version
  • aern-realfn-plot-gtk: provides a tool for plotting and interactively exploring graphs of real function approximations
status: under construction; haddock: current
  • aern-intpoly provides:
    • multi-variate bounded-size polynomials using any aern-real-compatible in/out-rounded coefficients (typically Double/MPFR intervals)
    • efficient refinement rounded aern-real operations
    • efficient rounded aern-realfn operations, enabling the use of such polynomials as continuous or differentiable function approximations
    status: under construction;

  • aern-2D deals with approximations of 2D geometrical objects
status: planned
  • aern-3D deals with approximations of 3D geometrical objects
status: planned
  • aern-net: implements distributed dataflow networks that with protocols for the transfer of approximations to exact numbers, functions, geometrical shapes, etc.
status: planned; haddock: very old version

Background

  • this code originates in an EPSRC-funded project EP/C01037X/1 (2006-2009), which is part of the DISCERN long-term initiative
  • the Google code version is a complete redesign and rewrite that started in 2010; many features available in pre-2010 versions are not yet available in the latest version, eg polynomial arithmetic and data-flow networks

Management

Development

  • tools currently required:
    • ghc >= 6.12.3 (except 7.0.?; 7.2.2 is fine)
    • for parts that use MPFR one needs to compile a slightly modified ghc as described here

Sign in to add a comment
Powered by Google Project Hosting