AERN-Real-0.9.5: src/Data/Number/ER/BasicTypes.hs
{-|
Module : Data.Number.ER.BasicTypes
Description : generic types for exact real number processing
Copyright : (c) Michal Konecny
License : BSD3
Maintainer : mik@konecny.aow.cz
Stability : experimental
Portability : portable
generic types for exact real number processing
-}
module Data.Number.ER.BasicTypes
where
import qualified Data.Number.ER.ExtendedInteger as EI
{-|
Precision represents an upper bound on the measure of
an approximation viewed as a set;
not to be confused with the precision of
an 'Data.Number.ER.Real.Base.Float.ERFloat' and similar.
In an approximation comprising a number of
instances of 'Data.Number.ER.Real.Base.ERRealBase',
we will refer to the bit-precision of these base components
as the 'Granularity' of the approximation.
-}
type Precision = EI.ExtendedInteger
{-|
The bit size of the floating point numbers (or similar)
used internally in real number and function approximations.
-}
type Granularity = Int
prec2gran :: Precision -> Granularity
prec2gran = fromInteger . toInteger
{-|
This type synonym should be used for funciton parameter(s)
that guide the convergence of the function's result to
a perfect (exact) result.
The name should remind us
that there is no universally valid relationship between
this integer the quality (precision) of the result.
The only condition usually assumed is that in the limit
when the effort index rises to infinity, the result
should be exact.
-}
type EffortIndex = Integer
effIx2gran :: EffortIndex -> Granularity
effIx2gran = fromInteger . toInteger
effIx2prec :: EffortIndex -> Precision
effIx2prec = fromInteger . toInteger
effIx2int :: EffortIndex -> Int
effIx2int = fromInteger . toInteger
int2effIx :: Int -> EffortIndex
int2effIx = fromInteger . toInteger
prec2effIx :: Precision -> EffortIndex
prec2effIx = fromInteger . toInteger
gran2effIx :: Granularity -> EffortIndex
gran2effIx = fromInteger . toInteger