{-|
    Module      :  Data.Number.ER.Real.DefaultRepr
    Description :  concise names for default real representations
    Copyright   :  (c) Michal Konecny
    License     :  BSD3

    Maintainer  :  mik@konecny.aow.cz
    Stability   :  experimental
    Portability :  non-portable (requires fenv.h)

    This module supplies default instances for the real number classes
    defined in "Data.Number.ER.Real.Approx".
    
    These classes express loosely coupled abstraction layers.    
    To preserve the intended loose coupling, 
    please use these definitions only in functions that do not import or export
    any real numbers or real functions.
-}
module Data.Number.ER.Real.DefaultRepr
(
    initMachineDouble,
    B, BM, BAP, BMAP, BR, 
    RA, IRA
)
where

--import 

import Data.Number.ER.Real.Base.Float
import Data.Number.ER.Real.Base.Rational

import Data.Number.ER.Real.Approx.Interval

--import Data.Number.ER.Real.Base.BigFloatBase
import Data.Number.ER.Real.Base.MachineDouble
import Data.Number.ER.Real.Base.CombinedMachineAP

type BAP = ERFloat

{-| 
        Limited granularity, but sometimes up to 100x faster
        than ERFloat!
        
        !!! to be safe, one has to run 'initMachineDouble'
-}
type BM = Double

{-|
        Use machine 'Double' while the granularity is up to its significant bit length
        and when the granularity grows beyond that, use 'ERFloat'.
        
        !!! to be safe, one has to run 'initMachineDouble'
-}
type BMAP = ERMachineAP BAP
 
--type BBF = BigFloat Prec50 -- seems incomplete on 25/Jun/2008 

{-| very inefficient -}
type BR = ExtendedRational 

{-| 
    the default base type
-}
--type B = BAP
--type B = BM
type B = BMAP
--type B = BR

{-| 
    the default instance of 'Data.Number.ER.Real.Approx.ERApprox' 
-}
type RA = ERInterval B

{-| 
    the default instance of 'Data.Number.ER.Real.Approx.ERIntApprox' 
-}
type IRA = ERInterval B