AERN-RnToRm-0.5: src/Data/Number/ER/RnToRm.hs
{-|
Module : Data.Number.ER.RnToRm
Description : overview of AERN-RnToRm
Copyright : (c) Michal Konecny
License : BSD3
Maintainer : mik@konecny.aow.cz
Stability : experimental
Portability : non-portable (requires fenv.h)
This module bundles some of the most important functionality
of the AERN-RnToRm package.
It is intended to be imported *qualified*.
AERN-RnToRm provides
datatypes and abstractions for approximating functions
of type @D -> R^m@ where @D@ is a bounded interval in @R^n@
with non-empty interior.
Abstractions are provided via 4 type classes:
* 'UFB.ERUnitFnBase':
generalises polynomials with floating point coefficients.
(/Not exported here, used only internally./)
* 'ERFnApprox':
generalises functions enclosures on a certain unspecified domain.
* 'UFA.ERUnitFnApprox' (extends 'ERFnApprox'): generalises function graph enclosures
on the domain @[-1,1]^n@.
(/Not exported here, used only internally./)
* 'ERFnDomApprox' (extends 'ERFnApprox'):
generalises function enclosures over a specified and queriable domain box
(instance of class 'DomainBox').
At all levels, all field operations are supported as well as
some elementary operations, namely exp, sin and cos.
Log and sqrt are planned to be added soon.
Implementations of 'UFB.ERUnitFnBase':
* 'ERChebPoly'
By using the Chebyshev basis on domain @[-1,1]^n@,
we gain simple and optimally rounding degree reduction
as well as relatively simple handling of rounding
in other operations.
Implementations of 'UFA.ERUnitFnApprox':
* 'ERFnInterval'
Implementations of 'ERFnDomApprox':
* 'ERFnDomTranslApprox':
builds a basic implementation
using an instance of 'UFA.ERUnitFnApprox'.
* 'ERFnTuple':
extends another implementation of 'ERFnDomApprox'
to work with lists of functions simultaneously.
* 'ERFnDomEdgesApprox':
separately enclose a function on its domain box
as well as on all the domain's hyper-edges
(including the corners) using
another implementation of 'ERFnDomApprox'.
* 'ERFnPiecewise':
allows the domain box to be bisected
to an arbitrary finite depth
and uses another implementation of 'ERFnDomApprox'
to approximate the function on each segment.
-}
module Data.Number.ER.RnToRm
(
module Data.Number.ER.RnToRm.DefaultRepr,
module Data.Number.ER.RnToRm.Approx,
module Data.Number.ER.BasicTypes.DomainBox
)
where
import Data.Number.ER.RnToRm.DefaultRepr
import Data.Number.ER.RnToRm.Approx
import Data.Number.ER.BasicTypes.DomainBox
import qualified Data.Number.ER.RnToRm.UnitDom.Approx as UFA
import qualified Data.Number.ER.RnToRm.UnitDom.Base as UFB
import qualified Data.Number.ER.Real.Approx as RA
import qualified Data.Number.ER.Real.Approx.Elementary as RAEL
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom
import Data.Number.ER.RnToRm.UnitDom.Approx.Interval
import Data.Number.ER.RnToRm.Approx.DomTransl
import Data.Number.ER.RnToRm.Approx.DomEdges
import Data.Number.ER.RnToRm.Approx.Tuple
import Data.Number.ER.RnToRm.Approx.PieceWise