Name: AERN-Real
Version: 0.9.6
Cabal-Version: >= 1.2
Build-Type: Simple
License: BSD3
License-File: LICENCE
Author: Michal Konecny (Aston University)
Copyright: (c) 2007-2008 Michal Konecny, Amin Farjudian, Jan Duracz
Maintainer: mik@konecny.aow.cz
Stability: experimental
Category: Data, Math
Synopsis: arbitrary precision interval arithmetic for approximating exact real numbers
Tested-with: GHC ==6.8.2
Description:
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.
.
Simple examples of usage can be found in tests/Demo.hs.
Extra-source-files:
ChangeLog tests/Demo.hs
Flag containers-in-base
Default: False
Library
hs-source-dirs: src
if flag(containers-in-base)
Build-Depends:
base < 3, binary >= 0.4
else
Build-Depends:
base >= 3, containers, binary >= 0.4
Exposed-modules:
Data.Number.ER,
Data.Number.ER.Real,
Data.Number.ER.Real.DefaultRepr,
Data.Number.ER.Real.Base.MachineDouble,
Data.Number.ER.Real.Base.CombinedMachineAP,
Data.Number.ER.Real.Base.Rational,
Data.Number.ER.Real.Base.Float,
Data.Number.ER.Real.Base,
Data.Number.ER.Real.Arithmetic.Elementary,
Data.Number.ER.Real.Arithmetic.Integration,
Data.Number.ER.Real.Arithmetic.LinearSolver,
Data.Number.ER.Real.Arithmetic.Taylor,
Data.Number.ER.Real.Arithmetic.Newton,
Data.Number.ER.Real.Approx.Sequence,
Data.Number.ER.Real.Approx.Elementary,
Data.Number.ER.Real.Approx.Interval,
Data.Number.ER.Real.Approx,
Data.Number.ER.Real.DomainBox,
Data.Number.ER.Real.DomainBox.IntMap,
Data.Number.ER.PlusMinus,
Data.Number.ER.BasicTypes,
Data.Number.ER.Misc,
Data.Number.ER.ExtendedInteger
Extensions: DeriveDataTypeable, ForeignFunctionInterface, ScopedTypeVariables, MultiParamTypeClasses, FunctionalDependencies, TypeSynonymInstances, FlexibleInstances