!\)      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None+,8=>?@AHOUVXP mixed-types-numSAbility to lift collected (potential) errors from inside some structure/collection._This is useful mostly for structures that use the default implementation of 'CanEnsureCE es'.mixed-types-numA mechanism for adding and removing CollectErrors to a type in a manner that depends on the shape of the type, especially whether it already has CollectErrors.mixed-types-numUAdd CollectErrors to a type except when the type already has CollectErrors in it.mixed-types-numTranslate a value of a type a to a value of a type  EnsureCE es a.mixed-types-num6Make CollectErrors record with no value, only errors. mixed-types-numA wrapper around values which can accommodate a list of (potential) errors that have (maybe) occurred during the computation of a value. A value may be missing, leaving only the error(s).bSuch error collection allows one to write expressions with partial functions (ie functions that fail for some inputs) instead of branching after each application of such function. Dealing with the errors can be moved outside the expression. If the error data contain enough information, their list can be used to trace the source of the errors.mixed-types-num<A safe way to get a value out of the CollectErrors wrapper. mixed-types-num>An unsafe way to get a value out of an CollectErrors wrapper. mixed-types-numcAdd error collection support to an unary function whose result may already have collected errors.mixed-types-numcAdd error collection support to a binary function whose result may already have collected errors.mixed-types-numAdd error collection support to a binary function whose result may already have collected errors. A version where the second operand is not lifted, only the first one.mixed-types-numAdd error collection support to a binary function whose result may already have collected errors. A version where the first operand is not lifted, only the second one.mixed-types-num sample only mixed-types-num sample only mixed-types-num sample only mixed-types-num sample only mixed-types-num sample only (A type of numeric errors to be collected(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXf" mixed-types-numTranslate a value of a type a to a value of a type CollectNumErrors a except when a already is a CollectNumErrors- type, in which case the value is left as is.mixed-types-numTranslate a value of a type  EnsureCN es a to a6, throwing an exception if there was an error. If a is a CollectNumErrors% type, then this is just an identity.mixed-types-numTranslate a value of a type a to a value of a type CollectNumErrors a except when a already is a CollectNumErrors- type, in which case the value is left as is.mixed-types-numOConstruct an empty wrapper indicating that given error has certainly occurred. mixed-types-numJConstruct an empty wrapper indicating that given error may have occurred. mixed-types-numOConstruct an empty wrapper indicating that given error has certainly occurred. mixed-types-numJConstruct an empty wrapper indicating that given error may have occurred. mixed-types-numWrap a value in the CollectNumErrors wrapper. mixed-types-numBAn unsafe way to get a value out of the CollectNumErrors wrapper. mixed-types-numBAn unsafe way to get a value out of the CollectNumErrors wrapper. !!5Prelude without operations that clash with MixedTypes(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableSafe+,8=>?@AHOUVXi   !nm"#{zyxwvutsrqp$?%&bc^a_`]'ECDB()*96+,-./0781<=>2345:;@AFGHIJKLMNOPQRSTUVWXYZ[\defghijklo|}~   !nm"#{zyxwvutsrqp$?%&bc^a_`]'ECDB()*96+,-./0781<=>2345:;@AFGHIJKLMNOPQRSTUVWXYZ[\defghijklo|}~%Repeat declaration for multiple types(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableSafe+,8=>?@AHOUVXumixed-types-numA toy example of use: class HasTT t where type TT t getTT :: t -> TT t $(declForTypes [[t| Integer |], [t| Int |], [t| Rational |]] ( t -> [d| instance HasTT $t where type TT $t = () getTT _ = () |])) (Fixed-type numeric literals, conversions(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX  mixed-types-num!A runtime representative of type t>. Used for specialising polymorphic tests to concrete types. mixed-types-numDefine our own ConvertibleExactly since convertible is too relaxed for us. For example, convertible allows conversion from Rational to Integer, rounding to nearest integer. We prefer to allow only exact conversions.mixed-types-num*Restore if-then-else with RebindableSyntaxmixed-types-numReplacement for } using the RebindableSyntax extension. This version of fromInteger arranges that integer literals are always of type /.mixed-types-numReplacement for  using the RebindableSyntax extension. This version of fromRational arranges that rational literals are always of type 2. "mixed-types-numIHSpec properties that each implementation of CanBeInteger should satisfy.5mixed-types-numconversion function mixed-types-numsame-type operation mixed-types-nummixed-type operation 6mixed-types-numconversion function mixed-types-numsame-type operation mixed-types-nummixed-type operation 7mixed-types-numsame-type operation mixed-types-nummixed-type operation 8mixed-types-numsame-type operation mixed-types-nummixed-type operation 3      !"#$%&'()*+,-./0123456783$%&'( )*  +, !  -./01234"#7856"Bottom-up typed Boolean operations(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX?Imixed-types-numA type constraint synonym that stipulates that the type behaves very much like Bool, except it does not necessarily satisfy the law of excluded middle, which means that the type can contain a "do-not-know" value. Examples: Bool,  Maybe Bool, Maybe (Maybe Bool), CollectErrors BoolLmixed-types-numBinary logical e and f( for generalised Booleans. For example: V (Just True) && False = Just False (Just (Just True)) || False = (Just (Just True)) Qmixed-types-num5Compound type constraint useful for test definition. Smixed-types-numzThis is negation is both the numeric negation as well as the Boolean negation. Example of non-standard Boolean negation: " negate (Just True) = Just False Vmixed-types-num*Tests for truth or falsity. Beware, when isCertainlyTrue returns Falsep, it does not mean that the proposition is false. It usually means that we failed to prove the proposition.\mixed-types-num6If l is certainly True, then r is also certainly True.]mixed-types-num6If l is certainly True, then r is not certainly False.`mixed-types-numMHSpec properties that each implementation of CanTestCertainly should satisfy.amixed-types-num A synonym of U. bmixed-types-numKHSpec properties that each Boolean implementation of CanNeg should satisfy.cmixed-types-num A synonym of N. dmixed-types-num A synonym of O. gmixed-types-numEHSpec properties that each implementation of CanAndOr should satisfy.hmixed-types-numEHSpec properties that each implementation of CanAndOr should satisfy.imixed-types-numCHSpec properties that each implementation of IsBool should satisfy.!IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi!IiYVWX`Q[Z\^]_STUaRbPLMNOcdKJefghc3d2!Bottom-up typed order comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXDmixed-types-num-HSpec properties that each implementation of  should satisfy.mixed-types-num-HSpec properties that each implementation of  should satisfy.yz}{|~yz}{|~ 444444444444 $Bottom-up typed equality comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX2mixed-types-numBHSpec properties that each implementation of HasEq should satisfy.mixed-types-numBHSpec properties that each implementation of HasEq should satisfy.mixed-types-num,HSpec property of there-and-back conversion.mixed-types-num Given a list [(a1,b1),(a2,b2),...]' and assuming that at least one of  a1,a2,...E is non-zero, pick one of them and return the corresponding pair (ai,bi). If none of  a1,a2,...: is zero, either throws an exception or loops forever.)The default implementation is based on a " instance and is not parallel.mixed-types-numHHSpec properties that each implementation of CanTestZero should satisfy.mixed-types-numKHSpec properties that each implementation of CanPickNonZero should satisfy.$$44444  Bottom-up typed min, max and abs(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXImixed-types-numA replacement for Prelude's  and . If t1 = t2 and Ord t1D, then one can use the default implementation to mirror Prelude's min and max.mixed-types-numFHSpec properties that each implementation of CanMinMax should satisfy.mixed-types-numFHSpec properties that each implementation of CanMinMax should satisfy.+mixed-types-numA replacement for Prelude's . If Num tD, then one can use the default implementation to mirror Prelude's abs.mixed-types-num5Compound type constraint useful for test definition. .mixed-types-numKHSpec properties that each numeric implementation of CanNeg should satisfy./mixed-types-numCHSpec properties that each implementation of CanAbs should satisfy.*+,-./+,-*./ (Bottom-up typed addition and subtraction(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXCmixed-types-num#A replacement for Prelude's binary .If  CanNeg t2 and CanAdd t1 (NegType t2)6, then one can use the default implementation via a-b = a + (-b).Hmixed-types-numA replacement for Prelude's . If t1 = t2 and Num t1D, then one can use the default implementation to mirror Prelude's +.Omixed-types-numCHSpec properties that each implementation of CanAdd should satisfy.Pmixed-types-numCHSpec properties that each implementation of CanAdd should satisfy.Qmixed-types-numKHSpec properties that each implementation of CanAddSameType should satisfy.Rmixed-types-numCHSpec properties that each implementation of CanSub should satisfy.Smixed-types-numCHSpec properties that each implementation of CanSub should satisfy.ABCDEFGHIJKLMNOPQRSKHIJGFLNOPQCDEBAMRSL6M6 +Bottom-up typed multiplication and exponent(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXmixed-types-num#A replacement for Prelude's binary  and . If Num t1 and  Integral t2D, then one can use the default implementation to mirror Prelude's ^.mixed-types-numA replacement for Prelude's . If t1 = t2 and Num t1D, then one can use the default implementation to mirror Prelude's *.mixed-types-numCHSpec properties that each implementation of CanMul should satisfy.mixed-types-numCHSpec properties that each implementation of CanMul should satisfy.mixed-types-numKHSpec properties that each implementation of CanMulSameType should satisfy.mixed-types-numLike 6 but throwing an exception if the power is undefined. mixed-types-numCHSpec properties that each implementation of CanPow should satisfy.788 "Bottom-up typed round, floor, etc.(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXmixed-types-numA replacement for Prelude's J operations, such as round in which the result type is fixed to Integer.If  RealFrac t and CanTestPosNeg tD, then one can use the default implementation to mirror Prelude's round, etc.+In other cases, it is sufficient to define .mixed-types-numEHSpec properties that each implementation of CanRound should satisfy.mixed-types-numEHSpec properties that each implementation of CanRound should satisfy.mixed-types-numEHSpec properties that each implementation of CanRound should satisfy.Bottom-up typed division(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXmixed-types-num#A replacement for Prelude's binary . If t1 = t2 and  Fractional t1D, then one can use the default implementation to mirror Prelude's /.mixed-types-numCHSpec properties that each implementation of CanDiv should satisfy.mixed-types-numCHSpec properties that each implementation of CanDiv should satisfy.     #     #77)squash generated numbers to a given range(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX6mixed-types-numenforceRange (Just l, Just u) a where l < u returns an arbitrary value b with  u < b < lW. Moreover, the returned values are distributed roughly evenly if the input values aN are distributed roughly evenly in a large neighbourhood of the interval [l,r]. In most cases, when l<a<u, then b=a.5665"Bottom-up typed pi, sqrt, cos, etc(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX 8mixed-types-numA replacement for Prelude's  and . If  Floating tD, then one can use the default implementation to mirror Prelude's sin, cos.>mixed-types-numA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's log.Bmixed-types-numA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's exp.Gmixed-types-numA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's sqrt.Jmixed-types-numDHSpec properties that each implementation of CanSqrt should satisfy.Kmixed-types-numCHSpec properties that each implementation of CanExp should satisfy.Lmixed-types-numCHSpec properties that each implementation of CanLog should satisfy.Nmixed-types-numFHSpec properties that each implementation of CanSinCos should satisfy.Derived partially from Shttp://math.stackexchange.com/questions/1303044/axiomatic-definition-of-sin-and-cosOmixed-types-num&Approximate pi, synonym for Prelude's .We do not define (exect) piD in this package as we have no type that can represent it exactly.789;:<=>?@ABCDEFGHIJKLMNOGHIFEJBCDAK>?@=<LM89;:7NOInstances for Data.Complex(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX]]#Bottom-up typed numeric expressions"(c) Michal Konecny, Pieter CollinsBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX!<   !nm"#{zyxwvutsrqp$?%&bc^a_`]'ECDB()*96+,-./0781<=>2345:;@AFGHIJKLMNOPQRSTUVWXYZ[\defghijklo|}~      !"#$%&'()*+,-./012345678IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiyz}{|~*+,-./ABCDEFGHIJKLMNOPQRS     #56789;:<=>?@ABCDEFGHIJKLMNO] ! "#$%&'&(&)&*+,-./010203456789:&;&<=>?@0ABCDEFGHIJKLMNMOMPMQMRSTUVWMX0YMZM[\]M^V_V`Ma\b\cMdMeMfDghDiIjIkIlImnopqrstuvwxyz{|}z~zGGGGGGGGGGGGGG\????BBBBBBBBBBBB00000&&&&&&DDDDDD        !"#$%&'()*+,-./0123456789::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * +,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DE[ {z0000<BhBiBnBrBwB,mixed-types-num-0.3.2-HTUf8wIEEF9EQCkR9En4ja Numeric.MixedTypes.PreludeHidingMixedTypesNumPreludeNumeric.MixedTypes.LiteralsControl.CollectErrorsNumeric.CollectErrorsUtils.TH.DeclForTypesNumeric.MixedTypes.BoolNumeric.MixedTypes.OrdNumeric.MixedTypes.EqNumeric.MixedTypes.MinMaxAbsNumeric.MixedTypes.AddSubNumeric.MixedTypes.RingNumeric.MixedTypes.RoundNumeric.MixedTypes.FieldUtils.Test.EnforceRangeNumeric.MixedTypes.ElementaryNumeric.MixedTypes.ComplexPrelude fromInteger fromRationalbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.EnumenumFrom enumFromThen enumFromToenumFromThenTofail>>=>>fmapreturnGHC.Real fromIntegral realToFrac toRational<>memptymappendmconcat<*>pure*>BoundedEnumMonadFunctorGHC.ReadReadReal GHC.Float RealFloatGHC.ShowShow Applicative Data.FoldableFoldableData.Traversable Traversable SemigroupMonoid GHC.TypesBoolCharDoubleFloatInt integer-gmpGHC.Integer.TypeInteger GHC.MaybeMaybeOrderingRationalIOWord Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGTshowStringShowSsequencemapM sequenceAtraversereadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioErrorGHC.IOFilePath userErrorIOErrornotElemallany concatMapconcat sequence_mapM_elemnullfoldl1foldr1foldlfoldrfoldMap Data.OldListunwordswordsunlineslines Text.Readreadreadseitherlex readParenreadList readsPrecText.ParserCombinators.ReadPReadSatan2isIEEEisNegativeZeroisDenormalized scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadix Data.Functor<$>lcmgcdoddeven%maxBoundminBoundfromEnumtoEnumpredsucc showParen showStringshowCharshowsshowList showsPrecunzip3unzipzipWith3zipWithzip3lookupreversebreakspan dropWhile takeWhilecyclerepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemaybeuncurrycurryGHC.NumsubtractasTypeOfuntil$!flip.constid=<<<$<*GHC.Err undefinederrorWithoutStackTraceerror*convertible-1.1.1.0-7i96jmLhDws8ECMxJRs7xMData.Convertible.Base convError ConvertResult ConvertError CanExtractCE extractCE CanEnsureCEEnsureCE EnsureNoCEensureCE deEnsureCE ensureNoCE noValueECEprependErrorsECE SuitableForCECanTestErrorsCertainhasCertainError CollectErrorsgetMaybeValueCE getErrorsCEhasCertainErrorCE noValueCEprependErrorsCEce2ConvertResultgetValueIfNoErrorCEfilterValuesWithoutErrorCEgetValueOrThrowErrorsNCElift1CElift2CElift2TCE lift2TLCE$fArbitraryCollectErrors$fMonadCollectErrors$fApplicativeCollectErrors$fFunctorCollectErrors$fShowCollectErrors$fCanEnsureCEes->$fCanEnsureCEesMaybe$fCanEnsureCEes()$fCanEnsureCEesChar$fCanEnsureCEesBool$fCanEnsureCEesDouble$fCanEnsureCEesRatio$fCanEnsureCEesInteger$fCanEnsureCEesInt$fCanEnsureCEesCollectErrors CanExtractCN EnsureNoCNEnsureCN CanEnsureCNCN NumErrorsErrorCertaintyLevel ErrorCertainErrorPotentialNumError DivByZero OutOfRangehasCertainErrorCNsample_NumErrors extractCNensureCN deEnsureCN ensureNoCN noValueECNprependErrorsECNnoValueNumErrorCertainECNnoValueNumErrorPotentialECN getErrorsCNgetMaybeValueCN noValueCNnoValueNumErrorCertainCNnoValueNumErrorPotentialCNprependErrorsCNcndeCN~!$fShowNumError$fShowErrorCertaintyLevel$fCanTestErrorsCertain[] $fEqNumError$fEqErrorCertaintyLevel declForTypesTConvertibleExactlysafeConvertExactly CanBeDouble HasRationals CanBeRationalCanBeInt HasIntegers CanBeIntegerHasIfThenElseSameType HasIfThenElseIfThenElseType ifThenElseintegerintegers fromInteger_!!length replicatetakedropsplitAtspecCanBeIntegerprintArgsIfFails2intintsrational rationals fromRational_doubledoublesconvertExactlyconvertExactlyTargetSampletInttInteger tRationaltDoubletBooltMaybe tMaybeBooltMaybeMaybeBoolconvertFirstUsingconvertSecondUsing convertFirst convertSecond$fHasIfThenElseBoolt $fConvertibleExactlyDoubleDouble$fConvertibleExactlyIntDouble!$fConvertibleExactlyIntegerDouble $fConvertibleExactlyIntegerRatio$fConvertibleExactlyIntRatio$fConvertibleExactlyIntegerInt$fConvertibleExactlyRatioRatio$fConvertibleExactlyIntInt$fConvertibleExactlyIntInteger"$fConvertibleExactlyIntegerInteger'$fConvertibleExactlyDoubleCollectErrors&$fConvertibleExactlyRatioCollectErrors$$fConvertibleExactlyIntCollectErrors($fConvertibleExactlyIntegerCollectErrors%$fConvertibleExactlyBoolCollectErrorsIsBoolCanAndOrSameType CanAndOrWithCanAndOrAsymmetric AndOrTypeand2or2CanAndOrCanTestCertainlyXCanNegSameTypeCanNegNegTypenegateCanTestCertainlyisCertainlyTrueisCertainlyFalseHasBools isNotFalse isNotTruestronglyImplies weaklyImpliesstronglyEquivalentToweaklyEquivalentTospecCanTestCertainlynotspecCanNegBool&&||andor specCanAndOrspecCanAndOrNotMixed specIsBool$fConvertibleExactlyBoolMaybe$fConvertibleExactlyBoolBool$fCanTestCertainlyCollectErrors$fCanTestCertainlyMaybe$fCanTestCertainlyBool$fCanNegCollectErrors $fCanNegMaybe $fCanNegBool%$fCanAndOrAsymmetricBoolCollectErrors%$fCanAndOrAsymmetricCollectErrorsBool.$fCanAndOrAsymmetricCollectErrorsCollectErrors$fCanAndOrAsymmetricMaybeBool$fCanAndOrAsymmetricBoolMaybe$fCanAndOrAsymmetricMaybeMaybe$fCanAndOrAsymmetricBoolBoolHasOrderAsymmetricOrderCompareTypelessThan greaterThanleqgeqHasOrderCertainlyAsymmetricHasOrderCertainlyCNHasOrderCertainlyCEHasOrderCertainlyHasOrder><>=<=?>??=??<=?!>!!=!!<=! specHasOrderspecHasOrderNotMixed.$fHasOrderAsymmetricCollectErrorsCollectErrors$fHasOrderAsymmetricDoubleInt$fHasOrderAsymmetricIntDouble!$fHasOrderAsymmetricDoubleInteger!$fHasOrderAsymmetricIntegerDouble $fHasOrderAsymmetricRatioInteger $fHasOrderAsymmetricIntegerRatio$fHasOrderAsymmetricRatioInt$fHasOrderAsymmetricIntRatio$fHasOrderAsymmetricIntegerInt$fHasOrderAsymmetricIntInteger $fHasOrderAsymmetricDoubleDouble$fHasOrderAsymmetricRatioRatio"$fHasOrderAsymmetricIntegerInteger$fHasOrderAsymmetricIntInt$fHasOrderAsymmetric()() CanTestPosNegisCertainlyPositiveisCertainlyNonNegativeisCertainlyNegativeisCertainlyNonPositive'$fHasOrderAsymmetricCollectErrorsDouble'$fHasOrderAsymmetricDoubleCollectErrors&$fHasOrderAsymmetricCollectErrorsRatio&$fHasOrderAsymmetricRatioCollectErrors$$fHasOrderAsymmetricCollectErrorsInt$$fHasOrderAsymmetricIntCollectErrors($fHasOrderAsymmetricCollectErrorsInteger($fHasOrderAsymmetricIntegerCollectErrors$fCanTestPosNegCollectErrors$fCanTestPosNegDouble$fCanTestPosNegRatio$fCanTestPosNegInteger$fCanTestPosNegIntHasEqAsymmetric EqCompareTypeequalTo notEqualToHasEqCertainlyCNHasEqCertainlyCEHasEqCertainlyHasEqCertainlyAsymmetricHasEq==/=certainlyEqualTocertainlyNotEqualTonotCertainlyDifferentFrom?==?!==!!/=! specHasEqspecHasEqNotMixedspecConversion+$fHasEqAsymmetricCollectErrorsCollectErrors$fHasEqAsymmetricMaybeMaybe$fHasEqAsymmetric[][]$fHasEqAsymmetric(,,,,)(,,,,)$fHasEqAsymmetric(,,,)(,,,)$fHasEqAsymmetric(,,)(,,)$fHasEqAsymmetric(,)(,)$fHasEqAsymmetricDoubleInt$fHasEqAsymmetricIntDouble$fHasEqAsymmetricDoubleInteger$fHasEqAsymmetricIntegerDouble$fHasEqAsymmetricRatioInteger$fHasEqAsymmetricIntegerRatio$fHasEqAsymmetricRatioInt$fHasEqAsymmetricIntRatio$fHasEqAsymmetricIntegerInt$fHasEqAsymmetricIntInteger$fHasEqAsymmetricDoubleDouble$fHasEqAsymmetricRatioRatio$fHasEqAsymmetricIntegerInteger$fHasEqAsymmetricIntInt$fHasEqAsymmetricCharChar$fHasEqAsymmetricBoolBool$fHasEqAsymmetric()()CanPickNonZero pickNonZero CanTestZeroisCertainlyZeroisCertainlyNonZeroCanTestIntegercertainlyNotIntegercertainlyIntegercertainlyIntegerGetIt CanTestFinite isInfiniteisFinite CanTestNaNisNaNspecCanTestZerospecCanPickNonZero$$fHasEqAsymmetricCollectErrorsDouble$$fHasEqAsymmetricDoubleCollectErrors#$fHasEqAsymmetricCollectErrorsRatio#$fHasEqAsymmetricRatioCollectErrors!$fHasEqAsymmetricCollectErrorsInt!$fHasEqAsymmetricIntCollectErrors%$fHasEqAsymmetricCollectErrorsInteger%$fHasEqAsymmetricIntegerCollectErrors#$fHasEqAsymmetricCollectErrorsMaybe#$fHasEqAsymmetricMaybeCollectErrors"$fHasEqAsymmetricCollectErrorsBool"$fHasEqAsymmetricBoolCollectErrors$fCanTestNaNCollectErrors$fCanTestNaNRatio$fCanTestNaNInteger$fCanTestNaNDouble$fCanTestFiniteCollectErrors$fCanTestFiniteRatio$fCanTestFiniteInteger$fCanTestFiniteDouble$fCanTestIntegerCollectErrors$fCanTestIntegerDouble$fCanTestIntegerRatio$fCanTestIntegerInt$fCanTestIntegerInteger$fCanTestZeroCollectErrors$fCanTestZeroDouble$fCanTestZeroRatio$fCanTestZeroInteger$fCanTestZeroInt$fCanPickNonZeroCollectErrors$fCanPickNonZeroRatio$fCanPickNonZeroInteger$fCanPickNonZeroIntCanMinMaxSameType CanMinMaxThisCanMinMaxAsymmetric MinMaxTypeminmax CanMinMaxmaximumminimum specCanMinMaxspecCanMinMaxNotMixed/$fCanMinMaxAsymmetricCollectErrorsCollectErrors$fCanMinMaxAsymmetricMaybeMaybe$fCanMinMaxAsymmetric[][]!$fCanMinMaxAsymmetricRatioInteger!$fCanMinMaxAsymmetricIntegerRatio$fCanMinMaxAsymmetricRatioInt$fCanMinMaxAsymmetricIntRatio$fCanMinMaxAsymmetricIntegerInt$fCanMinMaxAsymmetricIntInteger!$fCanMinMaxAsymmetricDoubleDouble$fCanMinMaxAsymmetricRatioRatio#$fCanMinMaxAsymmetricIntegerInteger$fCanMinMaxAsymmetricIntIntCanAbsSameTypeCanAbsAbsTypeabs specCanNegNum specCanAbs$fCanNegDouble $fCanNegRatio$fCanNegInteger $fCanNegInt($fCanMinMaxAsymmetricCollectErrorsDouble($fCanMinMaxAsymmetricDoubleCollectErrors'$fCanMinMaxAsymmetricCollectErrorsRatio'$fCanMinMaxAsymmetricRatioCollectErrors%$fCanMinMaxAsymmetricCollectErrorsInt%$fCanMinMaxAsymmetricIntCollectErrors)$fCanMinMaxAsymmetricCollectErrorsInteger)$fCanMinMaxAsymmetricIntegerCollectErrors$fCanAbsCollectErrors$fCanAbsDouble $fCanAbsRatio$fCanAbsInteger $fCanAbsIntCanSubSameType CanSubThisCanSubSubTypesubCanAddSameType CanAddThisCanAddAsymmetricAddTypeaddCanAdd+-sum specCanAddspecCanAddNotMixedspecCanAddSameType specCanSubspecCanSubNotMixed,$fCanAddAsymmetricCollectErrorsCollectErrors$fCanAddAsymmetricMaybeMaybe$fCanAddAsymmetric[][]$fCanAddAsymmetricDoubleRatio$fCanAddAsymmetricRatioDouble$fCanAddAsymmetricDoubleInteger$fCanAddAsymmetricIntegerDouble$fCanAddAsymmetricDoubleInt$fCanAddAsymmetricIntDouble$fCanAddAsymmetricRatioInteger$fCanAddAsymmetricIntegerRatio$fCanAddAsymmetricRatioInt$fCanAddAsymmetricIntRatio$fCanAddAsymmetricIntegerInt$fCanAddAsymmetricIntInteger$fCanAddAsymmetricDoubleDouble$fCanAddAsymmetricRatioRatio $fCanAddAsymmetricIntegerInteger$fCanAddAsymmetricIntInt"$fCanSubCollectErrorsCollectErrors$fCanSubMaybeMaybe $fCanSub[][]$fCanSubDoubleRatio$fCanSubRatioDouble$fCanSubDoubleInteger$fCanSubIntegerDouble$fCanSubDoubleInt$fCanSubIntDouble$fCanSubRatioInteger$fCanSubIntegerRatio$fCanSubRatioInt$fCanSubIntRatio$fCanSubIntegerInt$fCanSubIntInteger$fCanSubDoubleDouble$fCanSubRatioRatio$fCanSubIntegerInteger$fCanSubIntInt%$fCanAddAsymmetricCollectErrorsDouble%$fCanAddAsymmetricDoubleCollectErrors$fCanSubCollectErrorsDouble$fCanSubDoubleCollectErrors$$fCanAddAsymmetricCollectErrorsRatio$$fCanAddAsymmetricRatioCollectErrors$fCanSubCollectErrorsRatio$fCanSubRatioCollectErrors"$fCanAddAsymmetricCollectErrorsInt"$fCanAddAsymmetricIntCollectErrors$fCanSubCollectErrorsInt$fCanSubIntCollectErrors&$fCanAddAsymmetricCollectErrorsInteger&$fCanAddAsymmetricIntegerCollectErrors$fCanSubCollectErrorsInteger$fCanSubIntegerCollectErrors CanPowCNByCanPowByCanPow PowTypeNoCNPowTypepowNoCNpowCanMulSameTypeCanMulByCanMulAsymmetricMulTypemulCanMulOrderedCertainlyRing OrderedRingRingCanAddSubMulBy*product specCanMulspecCanMulNotMixedspecCanMulSameType^^! integerPowCN powUsingMul specCanPow,$fCanMulAsymmetricCollectErrorsCollectErrors$fCanMulAsymmetricMaybeMaybe$fCanMulAsymmetric[][]$fCanMulAsymmetricDoubleRatio$fCanMulAsymmetricRatioDouble$fCanMulAsymmetricDoubleInteger$fCanMulAsymmetricIntegerDouble$fCanMulAsymmetricDoubleInt$fCanMulAsymmetricIntDouble$fCanMulAsymmetricRatioInteger$fCanMulAsymmetricIntegerRatio$fCanMulAsymmetricRatioInt$fCanMulAsymmetricIntRatio$fCanMulAsymmetricIntegerInt$fCanMulAsymmetricIntInteger$fCanMulAsymmetricDoubleDouble$fCanMulAsymmetricRatioRatio $fCanMulAsymmetricIntegerInteger$fCanMulAsymmetricIntInt"$fCanPowCollectErrorsCollectErrors$fCanPowMaybeMaybe$fCanPowDoubleInteger$fCanPowDoubleInt$fCanPowRatioInteger$fCanPowRatioInt$fCanPowIntInt$fCanPowIntInteger$fCanPowIntegerInt$fCanPowIntegerInteger$fRingCollectErrors $fRingRatio$fRingCollectErrors0 $fRingInteger#$fOrderedCertainlyRingCollectErrors$fOrderedCertainlyRingRatio$$fOrderedCertainlyRingCollectErrors0$fOrderedCertainlyRingInteger$fOrderedRingCollectErrors$fOrderedRingRatio$fOrderedRingCollectErrors0$fOrderedRingInteger%$fCanMulAsymmetricCollectErrorsDouble%$fCanMulAsymmetricDoubleCollectErrors$fCanPowCollectErrorsDouble$fCanPowDoubleCollectErrors$$fCanMulAsymmetricCollectErrorsRatio$$fCanMulAsymmetricRatioCollectErrors$fCanPowCollectErrorsRatio$fCanPowRatioCollectErrors"$fCanMulAsymmetricCollectErrorsInt"$fCanMulAsymmetricIntCollectErrors$fCanPowCollectErrorsInt$fCanPowIntCollectErrors&$fCanMulAsymmetricCollectErrorsInteger&$fCanMulAsymmetricIntegerCollectErrors$fCanPowCollectErrorsInteger$fCanPowIntegerCollectErrorsHasIntegerBounds integerBoundsCanRoundproperFractiontruncateroundceilingfloorCanDivIModIntegerSameType CanDivIModDivITypeModTypedivIModmoddivImodNoCNdivINoCN divIModNoCNspecCanDivIMod specCanRoundspecHasIntegerBounds$fCanDivIModDoubleInteger$fCanDivIModDoubleDouble$fCanDivIModRatioInteger$fCanDivIModRatioRatio$fCanDivIModIntegerInteger$fCanRoundDouble$fCanRoundRatio$fHasIntegerBoundsInt$fHasIntegerBoundsInteger$fHasIntegerBoundsDouble$fHasIntegerBoundsRatioCanDivCNSameType CanDivCNByCanDivSameTypeCanDivByCanRecipCNSameTypeCanRecipSameTypeCanRecipCanDiv DivTypeNoCNDivType divideNoCNdivideOrderedCertainlyField OrderedFieldFieldCanAddSubMulDivCNBy//!recip specCanDivspecCanDivNotMixed$fCanDivDoubleDouble$fCanDivRatioInteger$fCanDivIntegerRatio$fCanDivRatioInt$fCanDivIntRatio$fCanDivIntegerInt$fCanDivIntInteger$fCanDivRatioRatio$fCanDivIntegerInteger$fCanDivIntInt$fFieldCollectErrors $fFieldRatio$$fOrderedCertainlyFieldCollectErrors$fOrderedCertainlyFieldRatio$fOrderedFieldCollectErrors$fOrderedFieldRatiopowUsingMulRecip"$fCanDivCollectErrorsCollectErrors$fCanDivMaybeMaybe $fCanDiv[][]$fCanDivDoubleRatio$fCanDivRatioDouble$fCanDivDoubleInt$fCanDivIntDouble$fCanDivDoubleInteger$fCanDivIntegerDouble$fCanDivCollectErrorsDouble$fCanDivDoubleCollectErrors$fCanDivCollectErrorsRatio$fCanDivRatioCollectErrors$fCanDivCollectErrorsInt$fCanDivIntCollectErrors$fCanDivCollectErrorsInteger$fCanDivIntegerCollectErrorsCanEnforceRange enforceRangeCanSinCosSameType CanSinCos SinCosTypecossinCanLogCNSameTypeCanLogSameTypeCanLogLogTypelogCanExpSameTypeCanExpExpTypeexpCanSqrtCNSameTypeCanSqrtSameTypeCanSqrtSqrtTypesqrtspecCanSqrtRealspecCanExpRealspecCanLogRealpowUsingExpLogspecCanSinCosRealapproxPi$fCanPowIntDouble$fCanPowIntegerDouble$fCanPowRatioDouble$fCanPowDoubleRatio$fCanPowDoubleDouble$fCanSqrtCollectErrors$fCanSqrtDouble$fCanExpCollectErrors$fCanExpDouble$fCanLogCollectErrors$fCanLogDouble$fCanSinCosCollectErrors$fCanSinCosDoubletComplex$fCanExpComplex$fCanAbsComplex$fCanDivComplexComplex $fCanMulAsymmetricComplexComplex$fCanSubComplexComplex $fCanAddAsymmetricComplexComplex$fCanNegComplex$fCanTestIntegerComplex$fHasEqAsymmetricComplexComplex"$fConvertibleExactlyComplexComplex $fConvertibleExactlyRatioComplex$fConvertibleExactlyIntComplex"$fConvertibleExactlyIntegerComplex$fCanDivComplexDouble$fCanDivDoubleComplex$fCanMulAsymmetricComplexDouble$fCanMulAsymmetricDoubleComplex$fCanSubComplexDouble$fCanSubDoubleComplex$fCanAddAsymmetricComplexDouble$fCanAddAsymmetricDoubleComplex$fHasEqAsymmetricComplexDouble$fHasEqAsymmetricDoubleComplex$fCanDivComplexRatio$fCanDivRatioComplex$fCanMulAsymmetricComplexRatio$fCanMulAsymmetricRatioComplex$fCanSubComplexRatio$fCanSubRatioComplex$fCanAddAsymmetricComplexRatio$fCanAddAsymmetricRatioComplex$fHasEqAsymmetricComplexRatio$fHasEqAsymmetricRatioComplex$fCanDivComplexInt$fCanDivIntComplex$fCanMulAsymmetricComplexInt$fCanMulAsymmetricIntComplex$fCanSubComplexInt$fCanSubIntComplex$fCanAddAsymmetricComplexInt$fCanAddAsymmetricIntComplex$fHasEqAsymmetricComplexInt$fHasEqAsymmetricIntComplex$fCanDivComplexInteger$fCanDivIntegerComplex $fCanMulAsymmetricComplexInteger $fCanMulAsymmetricIntegerComplex$fCanSubComplexInteger$fCanSubIntegerComplex $fCanAddAsymmetricComplexInteger $fCanAddAsymmetricIntegerComplex$fHasEqAsymmetricComplexInteger$fHasEqAsymmetricIntegerComplex GHC.ClassesCanNegX^^RealFracpi