-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Exact real numbers via Cauchy sequences and MPFR
--   
--   Exact real numbers as Cauchy sequences of MPFR approximations.
--   
--   See module <a>AERN2.Real</a> for further documentation.
@package aern2-real
@version 0.1.1.0


-- | strict and guide accuracy pairs
module AERN2.AccuracySG

-- | An accuracy specification which includes a soft target "guide"
--   accuracy in addition to the usual string accuracy requirement.
data AccuracySG
AccuracySG :: Accuracy -> Accuracy -> AccuracySG
[_acStrict] :: AccuracySG -> Accuracy
[_acGuide] :: AccuracySG -> Accuracy
acSG0 :: AccuracySG
default_acSG :: AccuracySG
accuracySG :: Accuracy -> AccuracySG
bitsS :: Integer -> AccuracySG
bitsSG :: Integer -> Integer -> AccuracySG
accuracySGdefaultTolerance :: Integer
class CanAdjustToAccuracySG t
adjustToAccuracySG :: CanAdjustToAccuracySG t => AccuracySG -> t -> t
instance GHC.Classes.Eq AERN2.AccuracySG.AccuracySG
instance AERN2.AccuracySG.CanAdjustToAccuracySG AERN2.MP.UseMPFR.Ball.Type.MPBall
instance AERN2.AccuracySG.CanAdjustToAccuracySG GHC.Types.Bool
instance AERN2.AccuracySG.CanAdjustToAccuracySG t => AERN2.AccuracySG.CanAdjustToAccuracySG (GHC.Base.Maybe t)
instance AERN2.AccuracySG.CanAdjustToAccuracySG t => AERN2.AccuracySG.CanAdjustToAccuracySG (Control.CollectErrors.CollectErrors es t)
instance GHC.Show.Show AERN2.AccuracySG.AccuracySG
instance Numeric.MixedTypes.Literals.ConvertibleExactly AERN2.AccuracySG.AccuracySG AERN2.MP.Accuracy.Accuracy
instance Numeric.MixedTypes.Eq.HasEqAsymmetric AERN2.AccuracySG.AccuracySG AERN2.AccuracySG.AccuracySG
instance Numeric.MixedTypes.Ord.HasOrderAsymmetric AERN2.AccuracySG.AccuracySG AERN2.AccuracySG.AccuracySG
instance Numeric.MixedTypes.Ord.HasOrderAsymmetric AERN2.MP.Accuracy.Accuracy AERN2.AccuracySG.AccuracySG
instance Numeric.MixedTypes.Ord.HasOrderAsymmetric AERN2.AccuracySG.AccuracySG AERN2.MP.Accuracy.Accuracy
instance Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric AERN2.AccuracySG.AccuracySG AERN2.AccuracySG.AccuracySG
instance Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.AccuracySG.AccuracySG GHC.Integer.Type.Integer
instance Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Integer.Type.Integer AERN2.AccuracySG.AccuracySG
instance Numeric.MixedTypes.AddSub.CanSub AERN2.AccuracySG.AccuracySG GHC.Integer.Type.Integer
instance (Control.Arrow.Arrow to, AERN2.MP.Enclosure.CanUnionAsymmetric e1 e2) => AERN2.MP.Enclosure.CanUnionAsymmetric (to AERN2.AccuracySG.AccuracySG e1) (to AERN2.AccuracySG.AccuracySG e2)


-- | QA network log data structure
module AERN2.QA.NetLog
data ValueId
ValueId :: Integer -> ValueId
data QANetLogItem
QANetLogCreate :: ValueId -> [ValueId] -> String -> QANetLogItem
[qaLogCreate_newId] :: QANetLogItem -> ValueId
[qaLogCreate_sources] :: QANetLogItem -> [ValueId]
[qaLogCreate_name] :: QANetLogItem -> String
QANetLogQuery :: (Maybe ValueId) -> ValueId -> String -> QANetLogItem
[qaLogQuery_client] :: QANetLogItem -> (Maybe ValueId)
[qaLogQuery_provider] :: QANetLogItem -> ValueId
[qaLogQuery_description] :: QANetLogItem -> String
QANetLogAnswer :: (Maybe ValueId) -> ValueId -> String -> String -> QANetLogItem
[qaLogAnswer_client] :: QANetLogItem -> (Maybe ValueId)
[qaLogAnswer_provider] :: QANetLogItem -> ValueId
[qaLogAnswer_cacheUseDescription] :: QANetLogItem -> String
[qaLogAnswer_description] :: QANetLogItem -> String
type QANetLog = [QANetLogItem]
formatQALog :: Integer -> QANetLog -> String
printQALog :: QANetLog -> IO ()
printQANetLogThenResult :: (Show a) => (QANetLog, a) -> IO ()
formatQALogJSON :: QANetLog -> String
printQALogJSON :: QANetLog -> IO ()
writeNetLogJSON :: QANetLog -> IO ()
instance GHC.Generics.Generic AERN2.QA.NetLog.QANetLogItem
instance Data.Aeson.Types.ToJSON.ToJSON AERN2.QA.NetLog.ValueId
instance GHC.Generics.Generic AERN2.QA.NetLog.ValueId
instance GHC.Classes.Ord AERN2.QA.NetLog.ValueId
instance GHC.Classes.Eq AERN2.QA.NetLog.ValueId
instance GHC.Show.Show AERN2.QA.NetLog.ValueId
instance Data.Aeson.Types.ToJSON.ToJSON AERN2.QA.NetLog.QANetLogItem
instance GHC.Show.Show AERN2.QA.NetLog.QANetLogItem
instance GHC.Enum.Enum AERN2.QA.NetLog.ValueId


-- | Miscellaneous arrow-generic functions
module AERN2.Utils.Arrows

-- | Apply an arrow morphism on all elements of a list
mapA :: (ArrowChoice to) => (t1 `to` t2) -> ([t1] `to` [t2])

-- | Apply an arrow morphism on all elements of a list
mapWithIndexA :: (ArrowChoice to) => (Integer -> t1 `to` t2) -> ([t1] `to` [t2])
class CanSwitchArrow to1 to2
switchArrow :: CanSwitchArrow to1 to2 => (a `to1` b) -> (a `to2` b)
instance Control.Arrow.Arrow to => AERN2.Utils.Arrows.CanSwitchArrow (->) to


-- | Cacheable question-answer protocols
module AERN2.QA.Protocol

-- | A QA protocol at this level is simply a pair of types.
class (Show p, Show (Q p), Show (A p)) => QAProtocol p where {
    type family Q p;
    type family A p;
}

-- | A QA protocol with a caching method.
class (QAProtocol p, HasOrderCertainly (Q p) (Q p)) => QAProtocolCacheable p where {
    type family QACache p;
}
newQACache :: QAProtocolCacheable p => p -> QACache p
lookupQACache :: QAProtocolCacheable p => p -> QACache p -> Q p -> (Maybe (A p), Maybe String)
updateQACache :: QAProtocolCacheable p => p -> Q p -> A p -> QACache p -> QACache p

-- | An object we can ask queries about. Queries can be asked in some Arrow
--   <tt>to</tt>.
data QA to p
QA__ :: String -> Maybe (QAId to) -> [QAId to] -> p -> Maybe (Q p) -> (Maybe (QAId to), Maybe (QAId to)) -> (Q p) `to` (QAPromiseA to (A p)) -> QA to p
[qaName] :: QA to p -> String
[qaId] :: QA to p -> Maybe (QAId to)
[qaSources] :: QA to p -> [QAId to]
[qaProtocol] :: QA to p -> p
[qaSampleQ] :: QA to p -> Maybe (Q p)
[qaMakeQueryGetPromise] :: QA to p -> (Maybe (QAId to), Maybe (QAId to)) -> (Q p) `to` (QAPromiseA to (A p))
type QAPromiseA to a = () `to` a

-- | An infix synonym of <a>qaMakeQuery</a>.
(?..) :: QA to p -> (Q p) `to` (QAPromiseA to (A p))
infix 1 ?..
qaRename :: (String -> String) -> QA to p -> QA to p
mapQA :: (Arrow to) => (p1 -> p2) -> (Q p1 -> Q p2) -> (Q p2 -> Q p1) -> (A p1 -> A p2) -> QA to p1 -> QA to p2
mapQAsameQ :: (Arrow to, Q p1 ~ Q p2) => (p1 -> p2) -> (A p1 -> A p2) -> QA to p1 -> QA to p2
data AnyProtocolQA to
AnyProtocolQA :: (QA to p) -> AnyProtocolQA to

-- | A class of Arrows suitable for use in QA objects.
class (ArrowChoice to, Eq (QAId to)) => QAArrow to where {
    type family QAId to;
}

-- | Register a QA object, which leads to a change in its query processing
--   mechanism so that, eg, answers can be cached or computations assigned
--   to different threads/processes.
--   
--   The "sources" component of the incoming QA object can be used to
--   record the dependency graph among QA objects. After registration, the
--   QA object should have its list of dependencies **empty** as the
--   registration has recorded them elsewhere.
qaRegister :: (QAArrow to, (QAProtocolCacheable p)) => [QARegOption] -> (QA to p) `to` (QA to p)

-- | Create a qa object. The object is not "registered" automatically.
--   Invoking this function does not lead to any <tt>to</tt>-arrow
--   computation. The function is an operation of <a>QAArrow</a> so that
--   for some arrows, the question-answer mechanism can be automatically
--   altered. In particular, this is used to make all objects in the
--   (-&gt;) arrow automatically (unsafely) caching their answers. For most
--   arrows, the default implementation is sufficient.
newQA :: (QAArrow to, (QAProtocolCacheable p)) => String -> [AnyProtocolQA to] -> p -> Maybe (Q p) -> ((Maybe (QAId to), Maybe (QAId to)) -> (Q p) `to` (A p)) -> QA to p
qaFulfilPromiseA :: QAArrow to => (QAPromiseA to a) `to` a
qaMakeQueryGetPromiseA :: QAArrow to => Maybe (QAId to) -> (QA to p, Q p) `to` (QAPromiseA to (A p))
defaultNewQA :: (QAArrow to, QAProtocolCacheable p) => String -> [AnyProtocolQA to] -> p -> Maybe (Q p) -> ((Maybe (QAId to), Maybe (QAId to)) -> (Q p) `to` (A p)) -> QA to p
data QARegOption
QARegPreferParallel :: QARegOption
QARegPreferSerial :: QARegOption
qaMakeQuery :: (QAArrow to) => (QA to p) -> (Maybe (QAId to)) -> (Q p) `to` (A p)
qaMakeQueryA :: (QAArrow to) => Maybe (QAId to) -> (QA to p, Q p) `to` (A p)
qaMakeQueriesA :: (QAArrow to) => Maybe (QAId to) -> [(QA to p, Q p)] `to` [A p]
qaMakeQueryOnManyA :: (QAArrow to) => Maybe (QAId to) -> ([QA to p], Q p) `to` [A p]

-- | An infix synonym of <a>qaMakeQuery</a>
(?<-) :: (QAArrow to) => QA to p -> Maybe (QAId to) -> (Q p) `to` (A p)
infix 1 ?<-

-- | An infix synonym of <a>qaMakeQuery</a> with no source
(?) :: (QAArrow to) => QA to p -> (Q p) `to` (A p)
infix 1 ?

-- | An infix synonym of <a>qaRegister</a>
(-:-) :: (QAArrow to, QAProtocolCacheable p) => (QA to p) `to` (QA to p)
infix 0 -:-

-- | An infix synonym of <a>qaRegister</a>
(-:-|) :: (QAArrow to, QAProtocolCacheable p) => (QA to p) `to` (QA to p)
infix 0 -:-|

-- | An infix synonym of <a>qaRegister</a>
(-:-||) :: (QAArrow to, QAProtocolCacheable p) => (QA to p) `to` (QA to p)
infix 0 -:-||

-- | An infix synonym of <a>qaMakeQueryA</a>
(-?<-) :: (QAArrow to) => Maybe (QAId to) -> (QA to p, Q p) `to` (A p)
infix 0 -?<-

-- | An infix synonym of <a>qaMakeQueryA</a> with no source
(-?-) :: (QAArrow to) => (QA to p, Q p) `to` (A p)

-- | An infix synonym of <a>qaMakeQueryGetPromiseA</a>
(-?..<-) :: (QAArrow to) => Maybe (QAId to) -> (QA to p, Q p) `to` (QAPromiseA to (A p))
infix 0 -?..<-

-- | An infix synonym of <a>qaMakeQueryGetPromiseA</a> with no source
(-?..-) :: (QAArrow to) => (QA to p, Q p) `to` (QAPromiseA to (A p))

-- | An infix synonym of <a>qaMakeQueriesA</a>
(-???<-) :: (QAArrow to) => Maybe (QAId to) -> [(QA to p, Q p)] `to` [A p]
infix 0 -???<-

-- | An infix synonym of <a>qaMakeQueryOnManyA</a>
(-<?<->-) :: (QAArrow to) => Maybe (QAId to) -> ([QA to p], Q p) `to` [A p]
infix 0 -<?<->-

-- | Run two queries in an interleaving manner, enabling parallelism.
qaMake2Queries :: (QAArrow to) => (QA to p1, QA to p2) -> Maybe (QAId to) -> (Q p1, Q p2) `to` (A p1, A p2)

-- | An infix synonym of <a>qaMake2Queries</a>.
(??<-) :: (QAArrow to) => (QA to p1, QA to p2) -> Maybe (QAId to) -> (Q p1, Q p2) `to` (A p1, A p2)
infix 0 ??<-

-- | Run two queries in an interleaving manner, enabling parallelism.
qaMake3Queries :: (QAArrow to) => (QA to p1, QA to p2, QA to p3) -> Maybe (QAId to) -> (Q p1, Q p2, Q p3) `to` (A p1, A p2, A p3)
instance GHC.Classes.Eq AERN2.QA.Protocol.QARegOption
instance (AERN2.Utils.Arrows.CanSwitchArrow to1 to2, AERN2.QA.Protocol.QAArrow to1, AERN2.QA.Protocol.QAArrow to2, AERN2.QA.Protocol.QAProtocolCacheable p) => Numeric.MixedTypes.Literals.ConvertibleExactly (AERN2.QA.Protocol.QA to1 p) (AERN2.QA.Protocol.QA to2 p)
instance (AERN2.QA.Protocol.QAProtocol p, Control.CollectErrors.SuitableForCE es) => AERN2.QA.Protocol.QAProtocol (Control.CollectErrors.CollectErrors es p)


-- | QA net parallel evaluation
module AERN2.QA.Strategy.Parallel
type QAParA = Kleisli QAParM
executeQAParA :: (QAParA () a) -> IO a
executeQAParAwithLog :: (QAParA () a) -> IO (QANetLog, a)
instance AERN2.QA.Protocol.QAArrow AERN2.QA.Strategy.Parallel.QAParA
instance GHC.Base.Functor AERN2.QA.Strategy.Parallel.QAParM
instance GHC.Base.Applicative AERN2.QA.Strategy.Parallel.QAParM
instance GHC.Base.Monad AERN2.QA.Strategy.Parallel.QAParM
instance Control.Monad.IO.Class.MonadIO AERN2.QA.Strategy.Parallel.QAParM


-- | QA net plain evaluation with unsafe IO caching
module AERN2.QA.Strategy.CachedUnsafe

-- | A global variable controlling whether unsafe caching is used in QA
--   objects in the (-&gt;) arrow
qaUnsafeCachingMV :: MVar Bool
instance AERN2.QA.Protocol.QAArrow (->)


-- | The type of fast convergent sequences
module AERN2.Sequence.Type
data SequenceP a
SequenceP :: a -> SequenceP a
[unSequenceP] :: SequenceP a -> a
pSeq :: a -> SequenceP a
type FastConvSeqP a = SequenceP a
type EffortConvSeqP a = SequenceP a
class (Show a, Show (EnsureNoCN a), Show (EnsureCN a), HasAccuracy a, CanAdjustToAccuracySG a, CanEnsureCN a, CanEnsureCN (EnsureCN a), HasAccuracy (EnsureNoCN a), CanIntersectCNSameType a) => SuitableForSeq a
seqName :: SequenceA to a -> String
seqId :: SequenceA to a -> Maybe (QAId to)
seqSources :: SequenceA to a -> [QAId to]
seqRename :: (String -> String) -> SequenceA to a -> SequenceA to a

-- | Get an approximation of the limit with at least the specified
--   accuracy. (A specialisation of <a>qaMakeQuery</a> for Cauchy
--   sequences.)
seqWithAccuracy :: (QAArrow to) => SequenceA to a -> Maybe (QAId to) -> AccuracySG `to` a
seqWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> (SequenceA to a, AccuracySG) `to` a
seqsWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> ([SequenceA to a], AccuracySG) `to` [a]
type SequenceA to a = QA to (SequenceP a)
type Sequence a = SequenceA (->) a
type FastConvSeqA to a = SequenceA to a
type EffortConvSeqA to a = SequenceA to a
type FastConvSeq a = Sequence a
type EffortConvSeq a = Sequence a
newSeq :: (QAArrow to, SuitableForSeq a) => a -> String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` a) -> SequenceA to a
newSeqSimple :: (QAArrow to, SuitableForSeq a) => a -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` a) -> SequenceA to a
convergentList2SequenceA :: (QAArrow to, SuitableForSeq a) => String -> [a] -> (SequenceA to a)
seqByPrecision2SequenceA :: (QAArrow to, SuitableForSeq a) => String -> (Precision -> a) -> (SequenceA to a)
fmapSeq :: (Arrow to) => (a -> b) -> (SequenceA to a) -> (SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Integer.Type.Integer a, AERN2.MP.Precision.CanSetPrecision a, AERN2.Sequence.Type.SuitableForSeq a) => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Types.Int a, AERN2.MP.Precision.CanSetPrecision a, AERN2.Sequence.Type.SuitableForSeq a) => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Types.Int (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Literals.ConvertibleExactly AERN2.MP.UseMPFR.Dyadic.Dyadic a, AERN2.MP.Precision.CanSetPrecision a, AERN2.Sequence.Type.SuitableForSeq a) => Numeric.MixedTypes.Literals.ConvertibleExactly AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to a)
instance GHC.Show.Show a => GHC.Show.Show (AERN2.Sequence.Type.SequenceP a)
instance GHC.Show.Show a => GHC.Show.Show (AERN2.Sequence.Type.Sequence a)
instance (Control.Arrow.Arrow to, Control.CollectErrors.SuitableForCE es, Control.CollectErrors.CanEnsureCE es a) => Control.CollectErrors.CanEnsureCE es (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, AERN2.MP.Precision.ConvertibleWithPrecision GHC.Real.Rational a, AERN2.MP.Precision.CanSetPrecision a, AERN2.Sequence.Type.SuitableForSeq a) => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to a)
instance AERN2.Sequence.Type.SuitableForSeq AERN2.MP.UseMPFR.Ball.Type.MPBall
instance AERN2.Sequence.Type.SuitableForSeq (Numeric.CollectErrors.CN AERN2.MP.UseMPFR.Ball.Type.MPBall)
instance AERN2.Sequence.Type.SuitableForSeq GHC.Types.Bool
instance AERN2.Sequence.Type.SuitableForSeq (Numeric.CollectErrors.CN GHC.Types.Bool)
instance AERN2.Sequence.Type.SuitableForSeq t => AERN2.Sequence.Type.SuitableForSeq (GHC.Base.Maybe t)
instance AERN2.Sequence.Type.SuitableForSeq a => AERN2.QA.Protocol.QAProtocolCacheable (AERN2.Sequence.Type.SequenceP a)
instance GHC.Show.Show a => AERN2.QA.Protocol.QAProtocol (AERN2.Sequence.Type.SequenceP a)
instance GHC.Base.Functor AERN2.Sequence.Type.SequenceP
instance (Control.CollectErrors.SuitableForCE es, Control.CollectErrors.CanEnsureCE es a) => Control.CollectErrors.CanEnsureCE es (AERN2.Sequence.Type.SequenceP a)


-- | Helper functions for sequence operations.
module AERN2.Sequence.Helpers
unaryOp :: (QAArrow to, SuitableForSeq a, SuitableForSeq b) => String -> (a -> b) -> (Maybe (QAId to) -> SequenceA to a -> (AccuracySG `to` (AccuracySG, Maybe a))) -> SequenceA to a -> SequenceA to b
binaryOp :: (QAArrow to, SuitableForSeq a, SuitableForSeq b, SuitableForSeq c) => String -> (a -> b -> c) -> (Maybe (QAId to) -> SequenceA to a -> SequenceA to b -> (AccuracySG `to` ((AccuracySG, Maybe a), (AccuracySG, Maybe b)))) -> SequenceA to a -> SequenceA to b -> SequenceA to c
binaryOpWithPureArg :: (QAArrow to, SuitableForSeq a, SuitableForSeq b) => String -> (a -> t -> b) -> (Maybe (QAId to) -> SequenceA to a -> t -> (AccuracySG `to` (AccuracySG, Maybe a))) -> SequenceA to a -> t -> SequenceA to b
getInitQ1FromSimple :: (Arrow to) => AccuracySG `to` q -> Maybe (QAId to) -> r1 -> AccuracySG `to` (q, Maybe a)
getInitQ1TFromSimple :: (Arrow to) => AccuracySG `to` q -> Maybe (QAId to) -> r1 -> t -> AccuracySG `to` (q, Maybe a)
getInitQ1Q2FromSimple :: (Arrow to) => AccuracySG `to` (q, q) -> Maybe (QAId to) -> r1 -> r2 -> AccuracySG `to` ((q, Maybe a), (q, Maybe b))
binaryWithEncl :: (HasAccuracy b, HasPrecision b, CanSetPrecision t) => (a -> b -> t) -> Sequence a -> b -> t
binaryWithEnclTranslateAC :: (HasAccuracy b, HasPrecision b, CanSetPrecision t) => (a -> b -> AccuracySG -> AccuracySG) -> (a -> b -> t) -> Sequence a -> b -> t
seqElementSimilarToEncl :: (HasAccuracy b, HasPrecision b) => (a -> AccuracySG -> AccuracySG) -> b -> Sequence a -> a
getSeqFnNormLog :: (QAArrow to, CanEnsureCN v, HasNorm (EnsureNoCN v)) => Maybe (QAId to) -> SequenceA to a -> (a -> v) -> AccuracySG `to` (Maybe Integer, a)
ensureAccuracyA :: (ArrowChoice to, Show a, Show b, HasAccuracy b, CanEnsureCN b, HasAccuracy (EnsureNoCN b), Show (EnsureNoCN b)) => ([AccuracySG] `to` a) -> (a -> b) -> ((AccuracySG, ([AccuracySG], Maybe a)) `to` b)


-- | Ring operations on convergent sequences
module AERN2.Sequence.Ring
mulGetInitAC :: (HasNorm (EnsureNoCN other), CanEnsureCN other) => other -> AccuracySG -> AccuracySG
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a GHC.Integer.Type.Integer, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Integer.Type.Integer b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a GHC.Types.Int, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType a GHC.Types.Int)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Types.Int b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType GHC.Types.Int b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Types.Int (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a GHC.Real.Rational, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType a GHC.Real.Rational)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Real.Rational b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType GHC.Real.Rational b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a GHC.Integer.Type.Integer, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub GHC.Integer.Type.Integer b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.AddSub.CanSub GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a GHC.Types.Int, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType a GHC.Types.Int)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub GHC.Types.Int b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType GHC.Types.Int b)) => Numeric.MixedTypes.AddSub.CanSub GHC.Types.Int (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a GHC.Real.Rational, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType a GHC.Real.Rational)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub GHC.Real.Rational b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType GHC.Real.Rational b)) => Numeric.MixedTypes.AddSub.CanSub GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.AddSub.CanSub AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to b)
instance (Numeric.MixedTypes.AddSub.CanSub a AERN2.MP.UseMPFR.Ball.Type.MPBall, AERN2.Sequence.Type.SuitableForSeq a, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.AddSub.SubType a AERN2.MP.UseMPFR.Ball.Type.MPBall)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.Sequence a) AERN2.MP.UseMPFR.Ball.Type.MPBall
instance (Numeric.MixedTypes.AddSub.CanSub AERN2.MP.UseMPFR.Ball.Type.MPBall b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.AddSub.SubType AERN2.MP.UseMPFR.Ball.Type.MPBall b)) => Numeric.MixedTypes.AddSub.CanSub AERN2.MP.UseMPFR.Ball.Type.MPBall (AERN2.Sequence.Type.Sequence b)
instance (Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.SubType (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.AddSub.CanSub a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.SubType a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanSub (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a b, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN b), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.MulType a b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)
instance (Numeric.MixedTypes.Ring.CanMulAsymmetric a AERN2.MP.UseMPFR.Ball.Type.MPBall, AERN2.Sequence.Type.SuitableForSeq a, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Ring.MulType a AERN2.MP.UseMPFR.Ball.Type.MPBall)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.Sequence a) AERN2.MP.UseMPFR.Ball.Type.MPBall
instance (Numeric.MixedTypes.Ring.CanMulAsymmetric AERN2.MP.UseMPFR.Ball.Type.MPBall b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Ring.MulType AERN2.MP.UseMPFR.Ball.Type.MPBall b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric AERN2.MP.UseMPFR.Ball.Type.MPBall (AERN2.Sequence.Type.Sequence b)
instance (Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.MulType (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Ring.CanMulAsymmetric a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.MulType a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanMulAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a GHC.Integer.Type.Integer, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Integer.Type.Integer b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a GHC.Types.Int, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType a GHC.Types.Int)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Types.Int b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType GHC.Types.Int b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Types.Int (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a GHC.Real.Rational, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType a GHC.Real.Rational)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Real.Rational b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType GHC.Real.Rational b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to b)
instance (Numeric.MixedTypes.AddSub.CanAddAsymmetric a AERN2.MP.UseMPFR.Ball.Type.MPBall, AERN2.Sequence.Type.SuitableForSeq a, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.AddSub.AddType a AERN2.MP.UseMPFR.Ball.Type.MPBall)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.Sequence a) AERN2.MP.UseMPFR.Ball.Type.MPBall
instance (Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.MP.UseMPFR.Ball.Type.MPBall b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.AddSub.AddType AERN2.MP.UseMPFR.Ball.Type.MPBall b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.MP.UseMPFR.Ball.Type.MPBall (AERN2.Sequence.Type.Sequence b)
instance (Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.AddType (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.AddSub.CanAddAsymmetric a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.AddType a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.SubType a b)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.AddSub.AddType a b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)


-- | Field operations on convergent sequences.
module AERN2.Sequence.Field
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a GHC.Integer.Type.Integer, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType a GHC.Integer.Type.Integer), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv GHC.Integer.Type.Integer b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType GHC.Integer.Type.Integer b), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN GHC.Integer.Type.Integer b), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN b)) => Numeric.MixedTypes.Field.CanDiv GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a GHC.Types.Int, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType a GHC.Types.Int), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN a GHC.Types.Int)) => Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv GHC.Types.Int b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType GHC.Types.Int b), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN GHC.Types.Int b), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN b)) => Numeric.MixedTypes.Field.CanDiv GHC.Types.Int (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a GHC.Real.Rational, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType a GHC.Real.Rational), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN a GHC.Real.Rational)) => Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv GHC.Real.Rational b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType GHC.Real.Rational b), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN GHC.Real.Rational b), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN b)) => Numeric.MixedTypes.Field.CanDiv GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType a AERN2.MP.UseMPFR.Dyadic.Dyadic), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType AERN2.MP.UseMPFR.Dyadic.Dyadic b), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN AERN2.MP.UseMPFR.Dyadic.Dyadic b), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN b)) => Numeric.MixedTypes.Field.CanDiv AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a b, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN b), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivType a b), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Field.DivTypeNoCN a b)) => Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)
instance (Numeric.MixedTypes.Field.CanDiv a AERN2.MP.UseMPFR.Ball.Type.MPBall, AERN2.Sequence.Type.SuitableForSeq a, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Field.DivType a AERN2.MP.UseMPFR.Ball.Type.MPBall), AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Field.DivTypeNoCN a AERN2.MP.UseMPFR.Ball.Type.MPBall)) => Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.Sequence a) AERN2.MP.UseMPFR.Ball.Type.MPBall
instance (Numeric.MixedTypes.Field.CanDiv AERN2.MP.UseMPFR.Ball.Type.MPBall b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN b), Numeric.CollectErrors.CanEnsureCN b, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Field.DivType AERN2.MP.UseMPFR.Ball.Type.MPBall b), AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Field.DivTypeNoCN AERN2.MP.UseMPFR.Ball.Type.MPBall b)) => Numeric.MixedTypes.Field.CanDiv AERN2.MP.UseMPFR.Ball.Type.MPBall (AERN2.Sequence.Type.Sequence b)
instance (Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivType (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivTypeNoCN (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Field.CanDiv (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Field.CanDiv a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivType a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivTypeNoCN a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Field.CanDiv (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)


-- | Elementary functions on fast converging sequences.
module AERN2.Sequence.Elementary
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a GHC.Integer.Type.Integer, AERN2.MP.Precision.CanSetPrecision a, Numeric.CollectErrors.CanEnsureCN a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN a GHC.Integer.Type.Integer), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow GHC.Integer.Type.Integer a, AERN2.MP.Precision.CanSetPrecision a, Numeric.MixedTypes.Round.HasIntegerBounds a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType GHC.Integer.Type.Integer a), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN GHC.Integer.Type.Integer a)) => Numeric.MixedTypes.Ring.CanPow GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a GHC.Types.Int, AERN2.MP.Precision.CanSetPrecision a, Numeric.CollectErrors.CanEnsureCN a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN a GHC.Types.Int), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType a GHC.Types.Int)) => Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow GHC.Types.Int a, AERN2.MP.Precision.CanSetPrecision a, Numeric.MixedTypes.Round.HasIntegerBounds a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType GHC.Types.Int a), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN GHC.Types.Int a)) => Numeric.MixedTypes.Ring.CanPow GHC.Types.Int (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.MP.Precision.CanSetPrecision a, Numeric.CollectErrors.CanEnsureCN a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN a AERN2.MP.UseMPFR.Dyadic.Dyadic), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Dyadic.Dyadic a, AERN2.MP.Precision.CanSetPrecision a, Numeric.MixedTypes.Round.HasIntegerBounds a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType AERN2.MP.UseMPFR.Dyadic.Dyadic a), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN AERN2.MP.UseMPFR.Dyadic.Dyadic a)) => Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a GHC.Real.Rational, AERN2.MP.Precision.CanSetPrecision a, Numeric.CollectErrors.CanEnsureCN a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN a GHC.Real.Rational), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType a GHC.Real.Rational)) => Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow GHC.Real.Rational a, AERN2.MP.Precision.CanSetPrecision a, Numeric.MixedTypes.Round.HasIntegerBounds a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType GHC.Real.Rational a), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN GHC.Real.Rational a)) => Numeric.MixedTypes.Ring.CanPow GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanSqrt a, Numeric.MixedTypes.MinMaxAbs.CanMinMaxThis a GHC.Integer.Type.Integer, Numeric.CollectErrors.CanEnsureCN (Numeric.MixedTypes.Elementary.SqrtType a), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN (Numeric.MixedTypes.Elementary.SqrtType a)), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Elementary.SqrtType a)) => Numeric.MixedTypes.Elementary.CanSqrt (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanSinCos a, Numeric.CollectErrors.CanEnsureCN (Numeric.MixedTypes.Elementary.SinCosType a), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN (Numeric.MixedTypes.Elementary.SinCosType a)), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Elementary.SinCosType a)) => Numeric.MixedTypes.Elementary.CanSinCos (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanExp a, Numeric.CollectErrors.CanEnsureCN (Numeric.MixedTypes.Elementary.ExpType a), AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN (Numeric.MixedTypes.Elementary.ExpType a)), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Elementary.ExpType a)) => Numeric.MixedTypes.Elementary.CanExp (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanLog a, AERN2.MP.Precision.CanSetPrecision a, Numeric.CollectErrors.CanEnsureCN a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Elementary.LogType a)) => Numeric.MixedTypes.Elementary.CanLog (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a e, Numeric.CollectErrors.CanEnsureCN a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), Numeric.MixedTypes.Round.HasIntegerBounds e, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq e, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowTypeNoCN a e), AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ring.PowType a e)) => Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to e)
instance (Numeric.MixedTypes.Ring.CanPow a AERN2.MP.UseMPFR.Ball.Type.MPBall, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), Numeric.CollectErrors.CanEnsureCN a, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Ring.PowTypeNoCN a AERN2.MP.UseMPFR.Ball.Type.MPBall), AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Ring.PowType a AERN2.MP.UseMPFR.Ball.Type.MPBall)) => Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.Sequence a) AERN2.MP.UseMPFR.Ball.Type.MPBall
instance (Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Ball.Type.MPBall e, AERN2.Sequence.Type.SuitableForSeq e, Numeric.MixedTypes.Round.HasIntegerBounds e, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Ring.PowTypeNoCN AERN2.MP.UseMPFR.Ball.Type.MPBall e), AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.Ring.PowType AERN2.MP.UseMPFR.Ball.Type.MPBall e)) => Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Ball.Type.MPBall (AERN2.Sequence.Type.Sequence e)
instance (Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowTypeNoCN (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowType (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanPow (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Ring.CanPow a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowType a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowTypeNoCN a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanPow (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)


-- | Comparison operations on convergent sequences.
module AERN2.Sequence.Comparison
type SeqBoolP = SequenceP (Maybe Bool)
type SeqBoolA to = SequenceA to (Maybe Bool)
type SeqBool = SeqBoolA (->)
pBool :: SeqBoolP

-- | SequenceAtAccuracy exists only so that we can QuickCheck that Sequence
--   satisfies properties whose statement relies on an instance of
--   HasEqCertainly. Sequence is not an instance but SequenceAtAccuracy is.
data SequenceAtAccuracy a
SequenceAtAccuracy :: (Sequence a) -> AccuracySG -> SequenceAtAccuracy a
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a GHC.Integer.Type.Integer, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Integer.Type.Integer b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a GHC.Integer.Type.Integer, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Integer.Type.Integer a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType GHC.Integer.Type.Integer a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a GHC.Integer.Type.Integer, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Integer.Type.Integer a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType GHC.Integer.Type.Integer a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Integer.Type.Integer (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a GHC.Types.Int, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType a GHC.Types.Int)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Types.Int b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType GHC.Types.Int b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Types.Int (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a GHC.Types.Int, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType a GHC.Types.Int)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Types.Int a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType GHC.Types.Int a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Types.Int (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a GHC.Types.Int, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType a GHC.Types.Int)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Types.Int a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType GHC.Types.Int a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Types.Int (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a GHC.Real.Rational, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType a GHC.Real.Rational)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Real.Rational b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType GHC.Real.Rational b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a GHC.Real.Rational, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType a GHC.Real.Rational)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Real.Rational a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType GHC.Real.Rational a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a GHC.Real.Rational, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType a GHC.Real.Rational)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Type.SequenceA to a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Real.Rational a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType GHC.Real.Rational a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Real.Rational (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType AERN2.MP.UseMPFR.Dyadic.Dyadic a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Type.SequenceA to a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType AERN2.MP.UseMPFR.Dyadic.Dyadic a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.Sequence.Type.SequenceA to a)
instance GHC.Show.Show a => GHC.Show.Show (AERN2.Sequence.Comparison.SequenceAtAccuracy a)
instance (Numeric.MixedTypes.Eq.HasEqAsymmetric a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType a b)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Comparison.SequenceAtAccuracy a) (AERN2.Sequence.Comparison.SequenceAtAccuracy b)
instance (Numeric.MixedTypes.Ord.HasOrderAsymmetric a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType a b)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Comparison.SequenceAtAccuracy a) (AERN2.Sequence.Comparison.SequenceAtAccuracy b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Bool.HasBools b, AERN2.Sequence.Type.SuitableForSeq b) => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Types.Bool (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Bool.CanNeg a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Bool.NegType a)) => Numeric.MixedTypes.Bool.CanNeg (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Bool.CanAndOrAsymmetric a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Bool.AndOrType a b)) => Numeric.MixedTypes.Bool.CanAndOrAsymmetric (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Eq.EqCompareType a b)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Ord.OrderCompareType a b)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)
instance (Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Eq.EqCompareType (AERN2.Sequence.Type.SequenceA to a) b), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Eq.EqCompareType (AERN2.Sequence.Type.SequenceA to a) b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Eq.HasEqAsymmetric a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Eq.EqCompareType a (AERN2.Sequence.Type.SequenceA to b)), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Eq.EqCompareType a (AERN2.Sequence.Type.SequenceA to b))), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Eq.HasEqAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)
instance (Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType (AERN2.Sequence.Type.SequenceA to a) b), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType (AERN2.Sequence.Type.SequenceA to a) b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Ord.HasOrderAsymmetric a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType a (AERN2.Sequence.Type.SequenceA to b)), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType a (AERN2.Sequence.Type.SequenceA to b))), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanAbs a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.AbsType a)) => Numeric.MixedTypes.MinMaxAbs.CanAbs (AERN2.Sequence.Type.SequenceA to a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a b, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.MinMaxAbs.MinMaxType a b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.SequenceA to a) (AERN2.Sequence.Type.SequenceA to b)
instance (Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a AERN2.MP.UseMPFR.Ball.Type.MPBall, AERN2.Sequence.Type.SuitableForSeq a, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.MinMaxAbs.MinMaxType a AERN2.MP.UseMPFR.Ball.Type.MPBall)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.Sequence a) AERN2.MP.UseMPFR.Ball.Type.MPBall
instance (Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric AERN2.MP.UseMPFR.Ball.Type.MPBall b, AERN2.Sequence.Type.SuitableForSeq b, AERN2.MP.Precision.CanSetPrecision (Numeric.MixedTypes.MinMaxAbs.MinMaxType AERN2.MP.UseMPFR.Ball.Type.MPBall b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric AERN2.MP.UseMPFR.Ball.Type.MPBall (AERN2.Sequence.Type.Sequence b)
instance (Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.SequenceA to a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.MinMaxAbs.MinMaxType (AERN2.Sequence.Type.SequenceA to a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.Sequence.Type.SequenceA to a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a (AERN2.Sequence.Type.SequenceA to b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.MinMaxAbs.MinMaxType a (AERN2.Sequence.Type.SequenceA to b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.Sequence.Type.SequenceA to b)


-- | Instances of Prelude classes Eq, Ord, Num etc
module AERN2.Sequence.PreludeOps
instance Numeric.MixedTypes.Eq.HasEqCertainly a a => GHC.Classes.Eq (AERN2.Sequence.Type.Sequence a)
instance (Numeric.MixedTypes.Eq.HasEqCertainly a a, Numeric.MixedTypes.Ord.HasOrderCertainly a a) => GHC.Classes.Ord (AERN2.Sequence.Type.Sequence a)
instance (Numeric.MixedTypes.Ring.Ring a, Numeric.MixedTypes.MinMaxAbs.CanAbsSameType a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.MP.Precision.CanSetPrecision a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), Numeric.CollectErrors.CanEnsureCN a) => GHC.Num.Num (AERN2.Sequence.Type.Sequence a)
instance (Numeric.MixedTypes.Field.Field a, Numeric.MixedTypes.MinMaxAbs.CanAbsSameType a, AERN2.MP.Precision.ConvertibleWithPrecision GHC.Real.Rational a, AERN2.Sequence.Type.SuitableForSeq a, AERN2.Sequence.Type.SuitableForSeq (Numeric.CollectErrors.EnsureCN a), AERN2.MP.Precision.CanSetPrecision a, AERN2.Norm.HasNorm (Numeric.CollectErrors.EnsureNoCN a), Numeric.CollectErrors.CanEnsureCN a, AERN2.MP.Enclosure.CanIntersectCNSameType a) => GHC.Real.Fractional (AERN2.Sequence.Type.Sequence a)


-- | Branching operations for sequences
module AERN2.Sequence.Branching
type SeqBoolP = SequenceP (Maybe Bool)
type SeqBoolA to = SequenceA to (Maybe Bool)
type SeqBool = SeqBoolA (->)
pBool :: SeqBoolP

-- | SequenceAtAccuracy exists only so that we can QuickCheck that Sequence
--   satisfies properties whose statement relies on an instance of
--   HasEqCertainly. Sequence is not an instance but SequenceAtAccuracy is.
data SequenceAtAccuracy a
SequenceAtAccuracy :: (Sequence a) -> AccuracySG -> SequenceAtAccuracy a

-- | Given a list <tt>[(a1,b1),(a2,b2),...]</tt> and assuming that at least
--   one of <tt>a1,a2,...</tt> is non-zero, pick one of them and return the
--   corresponding pair <tt>(ai,bi)</tt>.
--   
--   If none of <tt>a1,a2,...</tt> is zero, either throw an exception or
--   loop forever.
pickNonZeroSeqA :: (QAArrow to, CanPickNonZero a) => Maybe (QAId to) -> [(SequenceA to a, s)] `to` Maybe (SequenceA to a, s)
pick :: (QAArrow to) => (Maybe (QAId to)) -> [(SequenceA to (Maybe a))] `to` a
instance Numeric.MixedTypes.Eq.CanPickNonZero a => Numeric.MixedTypes.Eq.CanPickNonZero (AERN2.Sequence.Type.Sequence a)
instance (AERN2.QA.Protocol.QAArrow to, Control.Arrow.ArrowApply to, Numeric.MixedTypes.Literals.HasIfThenElse b t, Numeric.MixedTypes.Literals.HasIfThenElse b (to AERN2.AccuracySG.AccuracySG t), Numeric.MixedTypes.Literals.IfThenElseType b (to AERN2.AccuracySG.AccuracySG t) ~ to AERN2.AccuracySG.AccuracySG (Numeric.MixedTypes.Literals.IfThenElseType b t), AERN2.Sequence.Type.SuitableForSeq b, AERN2.Sequence.Type.SuitableForSeq t, AERN2.Sequence.Type.SuitableForSeq (Numeric.MixedTypes.Literals.IfThenElseType b t)) => Numeric.MixedTypes.Literals.HasIfThenElse (AERN2.Sequence.Type.SequenceA to b) (AERN2.Sequence.Type.SequenceA to t)


-- | A type of fast convergent sequences parametrised by the arrow in which
--   the elements of the sequence are queried
module AERN2.Sequence
data SequenceP a
SequenceP :: a -> SequenceP a
[unSequenceP] :: SequenceP a -> a
pSeq :: a -> SequenceP a
class (Show a, Show (EnsureNoCN a), Show (EnsureCN a), HasAccuracy a, CanAdjustToAccuracySG a, CanEnsureCN a, CanEnsureCN (EnsureCN a), HasAccuracy (EnsureNoCN a), CanIntersectCNSameType a) => SuitableForSeq a
type SequenceA to a = QA to (SequenceP a)
type Sequence a = SequenceA (->) a
newSeq :: (QAArrow to, SuitableForSeq a) => a -> String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` a) -> SequenceA to a
newSeqSimple :: (QAArrow to, SuitableForSeq a) => a -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` a) -> SequenceA to a
seqName :: SequenceA to a -> String
seqId :: SequenceA to a -> Maybe (QAId to)
seqSources :: SequenceA to a -> [QAId to]
seqRename :: (String -> String) -> SequenceA to a -> SequenceA to a

-- | Get an approximation of the limit with at least the specified
--   accuracy. (A specialisation of <a>qaMakeQuery</a> for Cauchy
--   sequences.)
seqWithAccuracy :: (QAArrow to) => SequenceA to a -> Maybe (QAId to) -> AccuracySG `to` a

-- | An infix synonym of <a>qaMakeQuery</a> with no source
(?) :: (QAArrow to) => QA to p -> (Q p) `to` (A p)
infix 1 ?
seqWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> (SequenceA to a, AccuracySG) `to` a
seqsWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> ([SequenceA to a], AccuracySG) `to` [a]

-- | An infix synonym of <a>qaRegister</a>
(-:-) :: (QAArrow to, QAProtocolCacheable p) => (QA to p) `to` (QA to p)
infix 0 -:-

-- | An infix synonym of <a>qaRegister</a>
(-:-||) :: (QAArrow to, QAProtocolCacheable p) => (QA to p) `to` (QA to p)
infix 0 -:-||

-- | An infix synonym of <a>qaRegister</a>
(-:-|) :: (QAArrow to, QAProtocolCacheable p) => (QA to p) `to` (QA to p)
infix 0 -:-|

-- | SequenceAtAccuracy exists only so that we can QuickCheck that Sequence
--   satisfies properties whose statement relies on an instance of
--   HasEqCertainly. Sequence is not an instance but SequenceAtAccuracy is.
data SequenceAtAccuracy a
SequenceAtAccuracy :: (Sequence a) -> AccuracySG -> SequenceAtAccuracy a
convergentList2SequenceA :: (QAArrow to, SuitableForSeq a) => String -> [a] -> (SequenceA to a)
seqByPrecision2SequenceA :: (QAArrow to, SuitableForSeq a) => String -> (Precision -> a) -> (SequenceA to a)
pick :: (QAArrow to) => (Maybe (QAId to)) -> [(SequenceA to (Maybe a))] `to` a
unaryOp :: (QAArrow to, SuitableForSeq a, SuitableForSeq b) => String -> (a -> b) -> (Maybe (QAId to) -> SequenceA to a -> (AccuracySG `to` (AccuracySG, Maybe a))) -> SequenceA to a -> SequenceA to b
binaryOp :: (QAArrow to, SuitableForSeq a, SuitableForSeq b, SuitableForSeq c) => String -> (a -> b -> c) -> (Maybe (QAId to) -> SequenceA to a -> SequenceA to b -> (AccuracySG `to` ((AccuracySG, Maybe a), (AccuracySG, Maybe b)))) -> SequenceA to a -> SequenceA to b -> SequenceA to c
binaryOpWithPureArg :: (QAArrow to, SuitableForSeq a, SuitableForSeq b) => String -> (a -> t -> b) -> (Maybe (QAId to) -> SequenceA to a -> t -> (AccuracySG `to` (AccuracySG, Maybe a))) -> SequenceA to a -> t -> SequenceA to b
getSeqFnNormLog :: (QAArrow to, CanEnsureCN v, HasNorm (EnsureNoCN v)) => Maybe (QAId to) -> SequenceA to a -> (a -> v) -> AccuracySG `to` (Maybe Integer, a)
getInitQ1FromSimple :: (Arrow to) => AccuracySG `to` q -> Maybe (QAId to) -> r1 -> AccuracySG `to` (q, Maybe a)
getInitQ1TFromSimple :: (Arrow to) => AccuracySG `to` q -> Maybe (QAId to) -> r1 -> t -> AccuracySG `to` (q, Maybe a)
getInitQ1Q2FromSimple :: (Arrow to) => AccuracySG `to` (q, q) -> Maybe (QAId to) -> r1 -> r2 -> AccuracySG `to` ((q, Maybe a), (q, Maybe b))


-- | The type of Cauchy real numbers
module AERN2.Real.Type
type CauchyRealP = SequenceP MPBall
pCR :: CauchyRealP
type CauchyRealCNP = SequenceP (CN MPBall)
pCRCN :: CauchyRealCNP
type CauchyRealA to = SequenceA to MPBall
type CauchyReal = CauchyRealA (->)
newCR :: (QAArrow to) => String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` MPBall) -> CauchyRealA to
type CauchyRealCNA to = SequenceA to (CN MPBall)
type CauchyRealCN = CauchyRealCNA (->)
newCRCN :: (QAArrow to) => String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` CN MPBall) -> CauchyRealCNA to
type CauchyRealAtAccuracy = SequenceAtAccuracy MPBall
cauchyRealAtAccuracy :: CauchyReal -> AccuracySG -> CauchyRealAtAccuracy
realName :: SequenceA to a -> String
realId :: QA to p -> Maybe (QAId to)
realSources :: QA to p -> [QAId to]
realRename :: (String -> String) -> SequenceA to a -> SequenceA to a

-- | Get a ball approximation of the real number with at least the
--   specified accuracy. (A specialisation of <a>qaMakeQuery</a> for Cauchy
--   reals.)
realWithAccuracy :: (QAArrow to) => CauchyRealA to -> AccuracySG `to` MPBall
realWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> (CauchyRealA to, AccuracySG) `to` MPBall
realsWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> ([CauchyRealA to], AccuracySG) `to` [MPBall]
convergentList2CauchyRealA :: (QAArrow to) => String -> [MPBall] -> (CauchyRealA to)
seqByPrecision2CauchyRealA :: (QAArrow to) => String -> (Precision -> MPBall) -> (CauchyRealA to)
type CanBeReal t = CanBeRealA (->) t
real :: (CanBeRealA (->) t) => t -> CauchyReal
type CanBeRealA to t = ConvertibleExactly t (CauchyRealA to)
realA :: (CanBeRealA to t) => t -> CauchyRealA to
type CanBeComplex t = CanBeComplexA (->) t
complex :: (CanBeComplexA (->) t) => t -> Complex CauchyReal
type CanBeComplexA to t = ConvertibleExactly t (Complex (CauchyRealA to))
complexA :: (CanBeComplexA to t) => t -> Complex (CauchyRealA to)
instance AERN2.MP.Precision.ConvertibleWithPrecision AERN2.Real.Type.CauchyReal AERN2.MP.UseMPFR.Ball.Type.MPBall


-- | Tests for operations on cauchy real numbers.
--   
--   To run the tests using stack, execute:
--   
--   <pre>
--   stack test aern2-real --test-arguments "-a 1000 -m Real"
--   
--   </pre>
module AERN2.Real.Tests
specCauchyReal :: Spec

-- | A runtime representative of type <tt>CauchyReal</tt>. Used for
--   specialising polymorphic tests to concrete types.
tCauchyReal :: T CauchyReal
tCauchyRealAtAccuracy :: T CauchyRealAtAccuracy
instance Test.QuickCheck.Arbitrary.Arbitrary AERN2.Real.Type.CauchyRealAtAccuracy
instance Test.QuickCheck.Arbitrary.Arbitrary AERN2.Real.Type.CauchyReal


-- | Arithmetic operations on Cauchy Real numbers, except those that are
--   defined for more general sequences
module AERN2.Real.Arithmetic

-- | To get <tt>pi</tt> in an arbitrary arrow, use <a>piA</a>.
pi :: CauchyReal
piA :: (QAArrow to) => CauchyRealA to
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Ring.Ring (AERN2.Real.Type.CauchyRealA to)
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Ring.OrderedRing (AERN2.Real.Type.CauchyRealA to)
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Field.Field (AERN2.Real.Type.CauchyRealA to)
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Field.OrderedField (AERN2.Real.Type.CauchyRealA to)
instance GHC.Float.Floating AERN2.Real.Type.CauchyReal
instance GHC.Float.Floating AERN2.Real.Type.CauchyRealCN
instance Numeric.MixedTypes.Elementary.CanSinCos GHC.Integer.Type.Integer
instance Numeric.MixedTypes.Elementary.CanSinCos GHC.Types.Int
instance Numeric.MixedTypes.Elementary.CanSinCos AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Elementary.CanSinCos GHC.Real.Rational
instance Numeric.MixedTypes.Elementary.CanSqrt GHC.Integer.Type.Integer
instance Numeric.MixedTypes.Elementary.CanSqrt GHC.Types.Int
instance Numeric.MixedTypes.Elementary.CanSqrt AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Elementary.CanSqrt GHC.Real.Rational
instance Numeric.MixedTypes.Elementary.CanExp GHC.Integer.Type.Integer
instance Numeric.MixedTypes.Elementary.CanExp GHC.Types.Int
instance Numeric.MixedTypes.Elementary.CanExp AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Elementary.CanExp GHC.Real.Rational
instance Numeric.MixedTypes.Elementary.CanLog GHC.Integer.Type.Integer
instance Numeric.MixedTypes.Elementary.CanLog GHC.Types.Int
instance Numeric.MixedTypes.Elementary.CanLog AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Elementary.CanLog GHC.Real.Rational
instance Numeric.MixedTypes.Ring.CanPow GHC.Integer.Type.Integer AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Ring.CanPow GHC.Types.Int AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Dyadic.Dyadic AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Ring.CanPow GHC.Real.Rational AERN2.MP.UseMPFR.Dyadic.Dyadic
instance Numeric.MixedTypes.Ring.CanPow GHC.Integer.Type.Integer GHC.Real.Rational
instance Numeric.MixedTypes.Ring.CanPow GHC.Types.Int GHC.Real.Rational
instance Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Dyadic.Dyadic GHC.Real.Rational
instance Numeric.MixedTypes.Ring.CanPow GHC.Real.Rational GHC.Real.Rational
instance Data.Convertible.Base.Convertible AERN2.Real.Type.CauchyReal GHC.Types.Double
instance Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.Real.Type.CauchyReal GHC.Types.Double
instance Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Types.Double AERN2.Real.Type.CauchyReal
instance Numeric.MixedTypes.AddSub.CanSub AERN2.Real.Type.CauchyReal GHC.Types.Double
instance Numeric.MixedTypes.AddSub.CanSub GHC.Types.Double AERN2.Real.Type.CauchyReal
instance Numeric.MixedTypes.Ring.CanMulAsymmetric AERN2.Real.Type.CauchyReal GHC.Types.Double
instance Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Types.Double AERN2.Real.Type.CauchyReal
instance Numeric.MixedTypes.Field.CanDiv AERN2.Real.Type.CauchyReal GHC.Types.Double
instance Numeric.MixedTypes.Field.CanDiv GHC.Types.Double AERN2.Real.Type.CauchyReal
instance Numeric.MixedTypes.Ring.CanPow AERN2.Real.Type.CauchyReal GHC.Types.Double
instance Numeric.MixedTypes.Ring.CanPow GHC.Types.Double AERN2.Real.Type.CauchyReal
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Real.Type.CauchyRealA to) t) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.Real.Type.CauchyRealA to) (Data.Complex.Complex t)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric t (AERN2.Real.Type.CauchyRealA to)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (Data.Complex.Complex t) (AERN2.Real.Type.CauchyRealA to)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAdd (AERN2.Real.Type.CauchyRealA to) t, Numeric.MixedTypes.Bool.CanNegSameType t) => Numeric.MixedTypes.AddSub.CanSub (AERN2.Real.Type.CauchyRealA to) (Data.Complex.Complex t)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAdd t (AERN2.Real.Type.CauchyRealA to)) => Numeric.MixedTypes.AddSub.CanSub (Data.Complex.Complex t) (AERN2.Real.Type.CauchyRealA to)
instance Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Real.Type.CauchyRealA to) t => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.Real.Type.CauchyRealA to) (Data.Complex.Complex t)
instance Numeric.MixedTypes.Ring.CanMulAsymmetric t (AERN2.Real.Type.CauchyRealA to) => Numeric.MixedTypes.Ring.CanMulAsymmetric (Data.Complex.Complex t) (AERN2.Real.Type.CauchyRealA to)


-- | A monad-generic state of a QA net.
module AERN2.QA.Strategy.Cached.NetState
data QANetState m
QANetState :: Map ValueId (AnyQAComputation m) -> QANetLog -> Bool -> QANetState m
[net_id2value] :: QANetState m -> Map ValueId (AnyQAComputation m)
[net_log] :: QANetState m -> QANetLog
[net_should_cache] :: QANetState m -> Bool
initQANetState :: Bool -> QANetState m
data AnyQAComputation m
AnyQAComputation :: (QAComputation m p) -> AnyQAComputation m
data QAComputation m p

-- | used only if a suitable answer is not in the above cache
QAComputation :: p -> (QACache p) -> ((Maybe ValueId, Maybe ValueId) -> Q p -> m (QAPromiseA (Kleisli m) (A p))) -> QAComputation m p
insertNode :: (QAProtocolCacheable p) => p -> String -> [ValueId] -> ((Maybe ValueId, Maybe ValueId) -> Q p -> m (QAPromiseA (Kleisli m) (A p))) -> QANetState m -> (ValueId, QANetState m)
logQuery :: QANetState m -> Maybe ValueId -> ValueId -> String -> QANetState m
logAnswerUpdateCache :: (QAProtocolCacheable p) => QANetState m -> p -> Maybe ValueId -> ValueId -> (String, String, QACache p) -> QANetState m
getAnswerPromise :: (QAProtocolCacheable p, Monad m) => QANetState m -> p -> Maybe ValueId -> ValueId -> Q p -> m (() -> m (A p, [Char], QACache p))


-- | QA net evaluation with answer caching
module AERN2.QA.Strategy.Cached.Arrow
type QACachedA = Kleisli QACachedM
executeQACachedA :: (QACachedA () a) -> (QANetLog, a)
executeQAUncachedA :: (QACachedA () a) -> (QANetLog, a)
instance AERN2.QA.Protocol.QAArrow AERN2.QA.Strategy.Cached.Arrow.QACachedA
instance GHC.Base.Functor AERN2.QA.Strategy.Cached.Arrow.QACachedM
instance GHC.Base.Applicative AERN2.QA.Strategy.Cached.Arrow.QACachedM
instance GHC.Base.Monad AERN2.QA.Strategy.Cached.Arrow.QACachedM


-- | QA net evaluation with answer caching
module AERN2.QA.Strategy.Cached


-- | Exact real numbers represented by fast-converging Cauchy sequences of
--   MPBalls.
module AERN2.Real
type CauchyRealP = SequenceP MPBall
pCR :: CauchyRealP
type CauchyRealA to = SequenceA to MPBall
type CauchyReal = CauchyRealA (->)
newCR :: (QAArrow to) => String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` MPBall) -> CauchyRealA to
type CauchyRealCNA to = SequenceA to (CN MPBall)
type CauchyRealCN = CauchyRealCNA (->)
newCRCN :: (QAArrow to) => String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> AccuracySG `to` CN MPBall) -> CauchyRealCNA to
realName :: SequenceA to a -> String
realId :: QA to p -> Maybe (QAId to)
realSources :: QA to p -> [QAId to]
realRename :: (String -> String) -> SequenceA to a -> SequenceA to a

-- | Get a ball approximation of the real number with at least the
--   specified accuracy. (A specialisation of <a>qaMakeQuery</a> for Cauchy
--   reals.)
realWithAccuracy :: (QAArrow to) => CauchyRealA to -> AccuracySG `to` MPBall

-- | An infix synonym of <a>qaMakeQuery</a> with no source
(?) :: (QAArrow to) => QA to p -> (Q p) `to` (A p)
infix 1 ?
realWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> (CauchyRealA to, AccuracySG) `to` MPBall
realsWithAccuracyA :: (QAArrow to) => (Maybe (QAId to)) -> ([CauchyRealA to], AccuracySG) `to` [MPBall]

-- | An infix synonym of <a>qaRegister</a>
(-:-) :: (QAArrow to, QAProtocolCacheable p) => (QA to p) `to` (QA to p)
infix 0 -:-
convergentList2CauchyRealA :: (QAArrow to) => String -> [MPBall] -> (CauchyRealA to)
seqByPrecision2CauchyRealA :: (QAArrow to) => String -> (Precision -> MPBall) -> (CauchyRealA to)
type CanBeReal t = CanBeRealA (->) t
real :: (CanBeRealA (->) t) => t -> CauchyReal
type CanBeRealA to t = ConvertibleExactly t (CauchyRealA to)
realA :: (CanBeRealA to t) => t -> CauchyRealA to
type CanBeComplex t = CanBeComplexA (->) t
complex :: (CanBeComplexA (->) t) => t -> Complex CauchyReal
type CanBeComplexA to t = ConvertibleExactly t (Complex (CauchyRealA to))
complexA :: (CanBeComplexA to t) => t -> Complex (CauchyRealA to)

-- | To get <tt>pi</tt> in an arbitrary arrow, use <a>piA</a>.
pi :: CauchyReal
piA :: (QAArrow to) => CauchyRealA to
_addslACachedPrint :: IO ()
_addslAParPrint :: IO ()
_example_pif :: CauchyReal -> CauchyRealCN
_nsection :: Integer -> (Rational -> CauchyReal) -> (Rational, Rational) -> CauchyRealCN

module AERN2.Limit
class HasLimits ix s where {
    type family LimitType ix s;
}
limit :: HasLimits ix s => (ix -> s) -> LimitType ix s
data WithLipschitz f
WithLipschitz :: f -> f -> WithLipschitz f
instance AERN2.Limit.HasLimits GHC.Real.Rational (AERN2.Limit.WithLipschitz (AERN2.MP.UseMPFR.Ball.Type.MPBall -> Numeric.CollectErrors.CN AERN2.MP.UseMPFR.Ball.Type.MPBall))
instance AERN2.Limit.HasLimits GHC.Real.Rational (AERN2.Limit.WithLipschitz (AERN2.Real.Type.CauchyReal -> AERN2.Real.Type.CauchyRealCN))
instance AERN2.Limit.HasLimits GHC.Real.Rational AERN2.Real.Type.CauchyReal
instance AERN2.Limit.HasLimits GHC.Real.Rational (AERN2.Real.Type.CauchyReal -> AERN2.Real.Type.CauchyRealCN)
instance AERN2.Limit.HasLimits GHC.Real.Rational (AERN2.MP.UseMPFR.Ball.Type.MPBall -> Numeric.CollectErrors.CN AERN2.MP.UseMPFR.Ball.Type.MPBall)


-- | The type of values that depends on an immutable gloabal parameter,
--   such as FP precision.
module AERN2.WithGlobalParam.Type
data WithGlobalParamP prm a
WithGlobalParamP :: Maybe prm -> a -> WithGlobalParamP prm a
[withGlobalState_s] :: WithGlobalParamP prm a -> Maybe prm
[withGlobalState_a] :: WithGlobalParamP prm a -> a
pWGParam :: Maybe prm -> a -> WithGlobalParamP prm a
type SuitableForWGParam prm a = (Show a, Show prm, HasOrderCertainly prm prm)
wgprmName :: WithGlobalParamA to prm a -> String
wgprmId :: WithGlobalParamA to prm a -> Maybe (QAId to)
wgprmSources :: WithGlobalParamA to prm a -> [QAId to]
wgprmRename :: (String -> String) -> WithGlobalParamA to prm a -> WithGlobalParamA to prm a

-- | Get an approximation of the limit with at least the specified
--   accuracy. (A specialisation of <a>qaMakeQuery</a> for values with
--   global state.)
wgprmQuery :: (QAArrow to) => WithGlobalParamA to prm a -> Maybe (QAId to) -> prm `to` a
wgprmQueryA :: (QAArrow to) => (Maybe (QAId to)) -> (WithGlobalParamA to prm a, prm) `to` a
wgprmListQueryA :: (QAArrow to) => (Maybe (QAId to)) -> ([WithGlobalParamA to prm a], prm) `to` [a]
type WithGlobalParamA to prm a = QA to (WithGlobalParamP prm a)
type WithGlobalParam prm a = WithGlobalParamA (->) prm a
newWGParam :: (QAArrow to, SuitableForWGParam prm a) => Maybe prm -> a -> String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> prm `to` a) -> WithGlobalParamA to prm a
newWGParamSimple :: (QAArrow to, SuitableForWGParam prm a) => Maybe prm -> a -> ((Maybe (QAId to), Maybe (QAId to)) -> prm `to` a) -> WithGlobalParamA to prm a
fmapWGParam :: (Arrow to) => (a -> b) -> (WithGlobalParamA to prm a) -> (WithGlobalParamA to prm b)
instance (GHC.Show.Show prm, GHC.Show.Show a) => GHC.Show.Show (AERN2.WithGlobalParam.Type.WithGlobalParamP prm a)
instance (Control.Arrow.Arrow to, Control.CollectErrors.SuitableForCE es, Control.CollectErrors.CanEnsureCE es a) => Control.CollectErrors.CanEnsureCE es (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance AERN2.WithGlobalParam.Type.SuitableForWGParam prm a => AERN2.QA.Protocol.QAProtocolCacheable (AERN2.WithGlobalParam.Type.WithGlobalParamP prm a)
instance (GHC.Show.Show a, GHC.Show.Show prm) => AERN2.QA.Protocol.QAProtocol (AERN2.WithGlobalParam.Type.WithGlobalParamP prm a)
instance GHC.Base.Functor (AERN2.WithGlobalParam.Type.WithGlobalParamP prm)
instance (Control.CollectErrors.SuitableForCE es, Control.CollectErrors.CanEnsureCE es a) => Control.CollectErrors.CanEnsureCE es (AERN2.WithGlobalParam.Type.WithGlobalParamP prm a)


-- | Helper functions for defining operations over WithGlobalParam objects.
module AERN2.WithGlobalParam.Helpers
unaryOp :: (QAArrow to, SuitableForWGParam prm a, SuitableForWGParam prm b) => String -> (a -> b) -> WithGlobalParamA to prm a -> WithGlobalParamA to prm b
binaryOp :: (QAArrow to, SuitableForWGParam prm a, SuitableForWGParam prm b, SuitableForWGParam prm c) => String -> (a -> b -> c) -> WithGlobalParamA to prm a -> WithGlobalParamA to prm b -> WithGlobalParamA to prm c
binaryOpWithPureArg :: (QAArrow to, SuitableForWGParam prm a, SuitableForWGParam prm c) => String -> (a -> t -> c) -> WithGlobalParamA to prm a -> t -> WithGlobalParamA to prm c


-- | Ring operations on WithGlobalParam objects.
module AERN2.WithGlobalParam.Ring
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Integer.Type.Integer b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType a GHC.Types.Int)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Types.Int b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType GHC.Types.Int b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType a GHC.Real.Rational)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Real.Rational b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType GHC.Real.Rational b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub GHC.Integer.Type.Integer b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.AddSub.CanSub GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType a GHC.Types.Int)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub GHC.Types.Int b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType GHC.Types.Int b)) => Numeric.MixedTypes.AddSub.CanSub GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType a GHC.Real.Rational)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub GHC.Real.Rational b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType GHC.Real.Rational b)) => Numeric.MixedTypes.AddSub.CanSub GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.AddSub.CanSub AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (Numeric.MixedTypes.AddSub.CanSub (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.SubType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanSub (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.AddSub.CanSub a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.SubType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanSub (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanMulAsymmetric a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.MulType a b)) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.MulType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanMulAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Ring.CanMulAsymmetric a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.MulType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanMulAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Integer.Type.Integer b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType a GHC.Types.Int)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Types.Int b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType GHC.Types.Int b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType a GHC.Real.Rational)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Real.Rational b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType GHC.Real.Rational b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.AddType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.AddSub.CanAddAsymmetric a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.AddSub.AddType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanSub a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.SubType a b)) => Numeric.MixedTypes.AddSub.CanSub (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.AddSub.CanAddAsymmetric a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.AddSub.AddType a b)) => Numeric.MixedTypes.AddSub.CanAddAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)


-- | Field operations on WithGlobalParam objects.
module AERN2.WithGlobalParam.Field
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType a GHC.Integer.Type.Integer), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Field.CanDiv (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv GHC.Integer.Type.Integer b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType GHC.Integer.Type.Integer b), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.Field.CanDiv GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType a GHC.Types.Int), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN a GHC.Types.Int)) => Numeric.MixedTypes.Field.CanDiv (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv GHC.Types.Int b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType GHC.Types.Int b), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN GHC.Types.Int b)) => Numeric.MixedTypes.Field.CanDiv GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType a GHC.Real.Rational), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN a GHC.Real.Rational)) => Numeric.MixedTypes.Field.CanDiv (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv GHC.Real.Rational b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType GHC.Real.Rational b), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN GHC.Real.Rational b)) => Numeric.MixedTypes.Field.CanDiv GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType a AERN2.MP.UseMPFR.Dyadic.Dyadic), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Field.CanDiv (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType AERN2.MP.UseMPFR.Dyadic.Dyadic b), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.Field.CanDiv AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Field.CanDiv a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivType a b), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Field.DivTypeNoCN a b)) => Numeric.MixedTypes.Field.CanDiv (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (Numeric.MixedTypes.Field.CanDiv (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivTypeNoCN (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Field.CanDiv (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Field.CanDiv a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Field.DivTypeNoCN a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Field.CanDiv (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)


-- | Elementary functions on fast converging sequences.
module AERN2.WithGlobalParam.Elementary
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN a GHC.Integer.Type.Integer), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Ring.CanPow (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow GHC.Integer.Type.Integer a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN GHC.Integer.Type.Integer a), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType GHC.Integer.Type.Integer a)) => Numeric.MixedTypes.Ring.CanPow GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN a GHC.Types.Int), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType a GHC.Types.Int)) => Numeric.MixedTypes.Ring.CanPow (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow GHC.Types.Int a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN GHC.Types.Int a), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType GHC.Types.Int a)) => Numeric.MixedTypes.Ring.CanPow GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN a AERN2.MP.UseMPFR.Dyadic.Dyadic), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Ring.CanPow (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Dyadic.Dyadic a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN AERN2.MP.UseMPFR.Dyadic.Dyadic a), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType AERN2.MP.UseMPFR.Dyadic.Dyadic a)) => Numeric.MixedTypes.Ring.CanPow AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN a GHC.Real.Rational), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType a GHC.Real.Rational)) => Numeric.MixedTypes.Ring.CanPow (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow GHC.Real.Rational a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN GHC.Real.Rational a), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType GHC.Real.Rational a)) => Numeric.MixedTypes.Ring.CanPow GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanSqrt a, Numeric.MixedTypes.MinMaxAbs.CanMinMaxThis a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Elementary.SqrtType a)) => Numeric.MixedTypes.Elementary.CanSqrt (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanSinCos a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Elementary.SinCosType a)) => Numeric.MixedTypes.Elementary.CanSinCos (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanExp a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Elementary.ExpType a)) => Numeric.MixedTypes.Elementary.CanExp (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Elementary.CanLog a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Elementary.LogType a)) => Numeric.MixedTypes.Elementary.CanLog (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ring.CanPow a e, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm e, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowTypeNoCN a e), AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ring.PowType a e)) => Numeric.MixedTypes.Ring.CanPow (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm e)
instance (Numeric.MixedTypes.Ring.CanPow (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowTypeNoCN (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanPow (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Ring.CanPow a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ring.PowTypeNoCN a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ring.CanPow (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)


-- | Comparison operations on WithGlobalParam objects.
module AERN2.WithGlobalParam.Comparison
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Integer.Type.Integer b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType GHC.Integer.Type.Integer b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Integer.Type.Integer a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType GHC.Integer.Type.Integer a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a GHC.Integer.Type.Integer, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType a GHC.Integer.Type.Integer)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Integer.Type.Integer
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Integer.Type.Integer a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType GHC.Integer.Type.Integer a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Integer.Type.Integer (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType a GHC.Types.Int)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Types.Int b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType GHC.Types.Int b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType a GHC.Types.Int)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Types.Int a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType GHC.Types.Int a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a GHC.Types.Int, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType a GHC.Types.Int)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Types.Int
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Types.Int a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType GHC.Types.Int a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Types.Int (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType a GHC.Real.Rational)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Real.Rational b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType GHC.Real.Rational b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType a GHC.Real.Rational)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Real.Rational a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType GHC.Real.Rational a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a GHC.Real.Rational, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType a GHC.Real.Rational)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) GHC.Real.Rational
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Real.Rational a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType GHC.Real.Rational a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric GHC.Real.Rational (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType AERN2.MP.UseMPFR.Dyadic.Dyadic b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType AERN2.MP.UseMPFR.Dyadic.Dyadic a)) => Numeric.MixedTypes.Eq.HasEqAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a AERN2.MP.UseMPFR.Dyadic.Dyadic, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType a AERN2.MP.UseMPFR.Dyadic.Dyadic)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) AERN2.MP.UseMPFR.Dyadic.Dyadic
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType AERN2.MP.UseMPFR.Dyadic.Dyadic a)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Bool.HasBools b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b) => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Types.Bool (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Bool.CanNeg a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Bool.NegType a)) => Numeric.MixedTypes.Bool.CanNeg (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Bool.CanAndOrAsymmetric a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Bool.AndOrType a b)) => Numeric.MixedTypes.Bool.CanAndOrAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Eq.HasEqAsymmetric a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Eq.EqCompareType a b)) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Ord.HasOrderAsymmetric a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Ord.OrderCompareType a b)) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Eq.EqCompareType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Eq.EqCompareType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Eq.HasEqAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Eq.HasEqAsymmetric a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Eq.EqCompareType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Eq.EqCompareType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b))), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Eq.HasEqAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.Ord.HasOrderAsymmetric a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Numeric.MixedTypes.Bool.IsBool (Control.CollectErrors.EnsureCE es (Numeric.MixedTypes.Ord.OrderCompareType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b))), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.Ord.HasOrderAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanAbs a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.AbsType a)) => Numeric.MixedTypes.MinMaxAbs.CanAbs (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a)
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm a, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.MinMaxAbs.MinMaxType a b)) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)
instance (Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b, Control.CollectErrors.CanEnsureCE es b, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.MinMaxAbs.MinMaxType (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) b), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm a) (Control.CollectErrors.CollectErrors es b)
instance (Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b), Control.CollectErrors.CanEnsureCE es a, Control.CollectErrors.CanEnsureCE es (Numeric.MixedTypes.MinMaxAbs.MinMaxType a (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)), Control.CollectErrors.SuitableForCE es) => Numeric.MixedTypes.MinMaxAbs.CanMinMaxAsymmetric (Control.CollectErrors.CollectErrors es a) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b)


-- | Branching operations for WithGlobalParam objects.
module AERN2.WithGlobalParam.Branching
instance (AERN2.QA.Protocol.QAArrow to, Numeric.MixedTypes.Literals.HasIfThenElse b t, AERN2.WithGlobalParam.Type.SuitableForWGParam prm b, AERN2.WithGlobalParam.Type.SuitableForWGParam prm t, AERN2.WithGlobalParam.Type.SuitableForWGParam prm (Numeric.MixedTypes.Literals.IfThenElseType b t)) => Numeric.MixedTypes.Literals.HasIfThenElse (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm b) (AERN2.WithGlobalParam.Type.WithGlobalParamA to prm t)


module AERN2.WithGlobalParam
data WithGlobalParamP prm a
WithGlobalParamP :: Maybe prm -> a -> WithGlobalParamP prm a
[withGlobalState_s] :: WithGlobalParamP prm a -> Maybe prm
[withGlobalState_a] :: WithGlobalParamP prm a -> a
pWGParam :: Maybe prm -> a -> WithGlobalParamP prm a
type SuitableForWGParam prm a = (Show a, Show prm, HasOrderCertainly prm prm)
wgprmName :: WithGlobalParamA to prm a -> String
wgprmId :: WithGlobalParamA to prm a -> Maybe (QAId to)
wgprmSources :: WithGlobalParamA to prm a -> [QAId to]
wgprmRename :: (String -> String) -> WithGlobalParamA to prm a -> WithGlobalParamA to prm a

-- | Get an approximation of the limit with at least the specified
--   accuracy. (A specialisation of <a>qaMakeQuery</a> for values with
--   global state.)
wgprmQuery :: (QAArrow to) => WithGlobalParamA to prm a -> Maybe (QAId to) -> prm `to` a

-- | An infix synonym of <a>qaMakeQuery</a> with no source
(?) :: (QAArrow to) => QA to p -> (Q p) `to` (A p)
infix 1 ?
wgprmQueryA :: (QAArrow to) => (Maybe (QAId to)) -> (WithGlobalParamA to prm a, prm) `to` a
wgprmListQueryA :: (QAArrow to) => (Maybe (QAId to)) -> ([WithGlobalParamA to prm a], prm) `to` [a]
type WithGlobalParamA to prm a = QA to (WithGlobalParamP prm a)
type WithGlobalParam prm a = WithGlobalParamA (->) prm a
newWGParam :: (QAArrow to, SuitableForWGParam prm a) => Maybe prm -> a -> String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> prm `to` a) -> WithGlobalParamA to prm a
newWGParamSimple :: (QAArrow to, SuitableForWGParam prm a) => Maybe prm -> a -> ((Maybe (QAId to), Maybe (QAId to)) -> prm `to` a) -> WithGlobalParamA to prm a
fmapWGParam :: (Arrow to) => (a -> b) -> (WithGlobalParamA to prm a) -> (WithGlobalParamA to prm b)
unaryOp :: (QAArrow to, SuitableForWGParam prm a, SuitableForWGParam prm b) => String -> (a -> b) -> WithGlobalParamA to prm a -> WithGlobalParamA to prm b
binaryOp :: (QAArrow to, SuitableForWGParam prm a, SuitableForWGParam prm b, SuitableForWGParam prm c) => String -> (a -> b -> c) -> WithGlobalParamA to prm a -> WithGlobalParamA to prm b -> WithGlobalParamA to prm c
binaryOpWithPureArg :: (QAArrow to, SuitableForWGParam prm a, SuitableForWGParam prm c) => String -> (a -> t -> c) -> WithGlobalParamA to prm a -> t -> WithGlobalParamA to prm c


-- | This type is useful for iRRAM-style arrow-generic computation over
--   MPBall with a global precision.
module AERN2.MPBallWithGlobalPrec
type MPBallWithGlobalPrecP = WithGlobalParamP Precision MPBall
pMPBallWGPrec :: MPBallWithGlobalPrecP
wgprmName :: WithGlobalParamA to prm a -> String
wgprmId :: WithGlobalParamA to prm a -> Maybe (QAId to)
wgprmSources :: WithGlobalParamA to prm a -> [QAId to]
wgprmRename :: (String -> String) -> WithGlobalParamA to prm a -> WithGlobalParamA to prm a

-- | Get an approximation of the limit with at least the specified
--   accuracy. (A specialisation of <a>qaMakeQuery</a> for values with
--   global state.)
wgprmQuery :: (QAArrow to) => WithGlobalParamA to prm a -> Maybe (QAId to) -> prm `to` a

-- | An infix synonym of <a>qaMakeQuery</a> with no source
(?) :: (QAArrow to) => QA to p -> (Q p) `to` (A p)
infix 1 ?
wgprmQueryA :: (QAArrow to) => (Maybe (QAId to)) -> (WithGlobalParamA to prm a, prm) `to` a
wgprmListQueryA :: (QAArrow to) => (Maybe (QAId to)) -> ([WithGlobalParamA to prm a], prm) `to` [a]
type MPBallWithGlobalPrecA to = WithGlobalParamA to Precision MPBall
type MPBallWithGlobalPrec = MPBallWithGlobalPrecA (->)
newMPBallWGPrec :: (QAArrow to) => String -> [AnyProtocolQA to] -> ((Maybe (QAId to), Maybe (QAId to)) -> Precision `to` MPBall) -> MPBallWithGlobalPrecA to
newMPBallWGPrecSimple :: (QAArrow to) => ((Maybe (QAId to), Maybe (QAId to)) -> Precision `to` MPBall) -> MPBallWithGlobalPrecA to
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Integer.Type.Integer (AERN2.MPBallWithGlobalPrec.MPBallWithGlobalPrecA to)
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Types.Int (AERN2.MPBallWithGlobalPrec.MPBallWithGlobalPrecA to)
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Literals.ConvertibleExactly AERN2.MP.UseMPFR.Dyadic.Dyadic (AERN2.MPBallWithGlobalPrec.MPBallWithGlobalPrecA to)
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Literals.ConvertibleExactly GHC.Real.Rational (AERN2.MPBallWithGlobalPrec.MPBallWithGlobalPrecA to)
instance AERN2.QA.Protocol.QAArrow to => Numeric.MixedTypes.Literals.ConvertibleExactly AERN2.Real.Type.CauchyReal (AERN2.MPBallWithGlobalPrec.MPBallWithGlobalPrecA to)
