=       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW 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 { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 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 jklmnopqrstuvwxyz{|}~%Repeat declaration for multiple types(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRTA 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 _ = () |])) 5Prelude without operations that clash with MixedTypes(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableSafe)*69:;<=DKQRT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None)*69:;<=DKQRT SAbility to lift collected (potential) errors from inside some structure/collection._This is useful mostly for structures that use the default implementation of 'CanEnsureCE es'.A 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.UAdd CollectErrors to a type except when the type already has CollectErrors in it. Translate a value of a type a to a value of a type  EnsureCE es a. 6Make CollectErrors record with no value, only errors. A 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.<A safe way to get a value out of the CollectErrors wrapper. >An unsafe way to get a value out of an CollectErrors wrapper. cAdd error collection support to an unary function whose result may already have collected errors.cAdd error collection support to a binary function whose result may already have collected errors.Add 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. Add 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.+  sample only  !"#$%&'()*+,-./  "     !"#$%&'()*+,-./(A type of numeric errors to be collected(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT @Translate 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.ATranslate 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.BTranslate 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.EOConstruct an empty wrapper indicating that given error has certainly occurred. FJConstruct an empty wrapper indicating that given error may have occurred. JOConstruct an empty wrapper indicating that given error has certainly occurred. KJConstruct an empty wrapper indicating that given error may have occurred. MWrap a value in the CollectNumErrors wrapper. NBAn unsafe way to get a value out of the CollectNumErrors wrapper. OBAn unsafe way to get a value out of the CollectNumErrors wrapper. #0123456789:;<=>?@ABCDEFGHIJKLMNOPQR!0123456789<:;=>?@ABCDEFGHIJKLMNO!6789:;<5>4=IJKHGL321@ABCDEF0?MNO0123456789:;<=>?@ABCDEFGHIJKLMNOPQR(Fixed-type numeric literals, conversions(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRTU!A runtime representative of type t>. Used for specialising polymorphic tests to concrete types.WDefine 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.`*Restore if-then-else with RebindableSyntaxcReplacement for } using the RebindableSyntax extension. This version of fromInteger arranges that integer literals are always of type ".dReplacement for  using the RebindableSyntax extension. This version of fromRational arranges that rational literals are always of type *. iIHSpec properties that each implementation of CanBeInteger should satisfy.8UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|conversion function same-type operation mixed-type operation }conversion function same-type operation mixed-type operation ~same-type operation mixed-type operation same-type operation mixed-type operation .UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~/cd`ab_^ef]g\kl[mnZoYpqWXXrshijUVtuvwxyz{~|}4UVWXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"Bottom-up typed Boolean operations(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRTA 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 BoolBinary logical  and ( for generalised Booleans. For example: V (Just True) && False = Just False (Just (Just True)) || False = (Just (Just True)) 5Compound type constraint useful for test definition. zThis is negation is both the numeric negation as well as the Boolean negation. Example of non-standard Boolean negation: " negate (Just True) = Just False *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.6If l is certainly True, then r is also certainly True.6If l is certainly True, then r is not certainly False.MHSpec properties that each implementation of CanTestCertainly should satisfy. A synonym of . KHSpec properties that each Boolean implementation of CanNeg should satisfy. A synonym of .  A synonym of . EHSpec properties that each implementation of CanAndOr should satisfy.EHSpec properties that each implementation of CanAndOr should satisfy.CHSpec properties that each implementation of IsBool should satisfy.5!!.32$Bottom-up typed equality comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRTBHSpec properties that each implementation of HasEq should satisfy.BHSpec properties that each implementation of HasEq should satisfy.,HSpec property of there-and-back conversion. 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.HHSpec properties that each implementation of CanTestZero should satisfy.KHSpec properties that each implementation of CanPickNonZero should satisfy.Q     $,E     44444!Bottom-up typed order comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT3-HSpec properties that each implementation of & should satisfy.4-HSpec properties that each implementation of & should satisfy.4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN !"#$%&'()*+,-./01234EFGHI&&  !!'(*)"%$#.,-+201/34EFGHIFGHI+   !!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIFGHIJKLMN '4(4)4*4+4,4-4.4/4041424  Bottom-up typed min, max and abs(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRTYA 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.`FHSpec properties that each implementation of CanMinMax should satisfy.aFHSpec properties that each implementation of CanMinMax should satisfy.pA replacement for Prelude's . If Num tD, then one can use the default implementation to mirror Prelude's abs.5Compound type constraint useful for test definition. sKHSpec properties that each numeric implementation of CanNeg should satisfy.tCHSpec properties that each implementation of CanAbs should satisfy.*WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}WXYZ[\]^_`aopqrst]YZ[\[\XW_^`apqrrost%WXYZ[\[\]^_`abcdefghijklmnopqrrstuvwxyz{|} (Bottom-up typed addition and subtraction(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT#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).A replacement for Prelude's . If t1 = t2 and Num t1D, then one can use the default implementation to mirror Prelude's +.CHSpec properties that each implementation of CanAdd should satisfy.CHSpec properties that each implementation of CanAdd should satisfy.KHSpec properties that each implementation of CanAddSameType should satisfy.CHSpec properties that each implementation of CanSub should satisfy.CHSpec properties that each implementation of CanSub should satisfy.:666 "Bottom-up typed round, floor, etc.(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRTA 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 .EHSpec properties that each implementation of CanRound should satisfy.EHSpec properties that each implementation of CanRound should satisfy.    +Bottom-up typed multiplication and exponent(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT#A replacement for Prelude's binary  and . If Num t1 and  Integral t2D, then one can use the default implementation to mirror Prelude's ^.A replacement for Prelude's . If t1 = t2 and Num t1D, then one can use the default implementation to mirror Prelude's *.CHSpec properties that each implementation of CanMul should satisfy.CHSpec properties that each implementation of CanMul should satisfy.KHSpec properties that each implementation of CanMulSameType should satisfy.Like 6 but throwing an exception if the power is undefined. CHSpec properties that each implementation of CanPow should satisfy.G      !"A      !"788 Bottom-up typed division(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT:#A replacement for Prelude's binary . If t1 = t2 and  Fractional t1D, then one can use the default implementation to mirror Prelude's /.FCHSpec properties that each implementation of CanDiv should satisfy.GCHSpec properties that each implementation of CanDiv should satisfy.,3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[3456789:;<=>?@ABCDEFGXBA@?:;=<>>6453987CDEXFG(3456789:;=<>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[C7D7"Bottom-up typed pi, sqrt, cos, etc(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT kA replacement for Prelude's  and . If  Floating tD, then one can use the default implementation to mirror Prelude's sin, cos.qA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's log.uA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's exp.zA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's sqrt.}DHSpec properties that each implementation of CanSqrt should satisfy.~CHSpec properties that each implementation of CanExp should satisfy.CHSpec properties that each implementation of CanLog should satisfy.FHSpec properties that each implementation of CanSinCos should satisfy.Derived partially from Shttp://math.stackexchange.com/questions/1303044/axiomatic-definition-of-sin-and-cos&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.&jklmnopqrstuvwxyz{|}~jklnmopqrstuvwxyz{|}~z{||yx}uvwwt~qrsspoklmmnnjjklmmnnopqrsstuvwwxyz{||}~Instances for Data.Complex(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT#Bottom-up typed numeric expressions"(c) Michal Konecny, Pieter CollinsBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0123456789<:;=>?@ABCDEFGHIJKLMNOUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./01234EFGHIWXYZ[\]^_`aopqrst3456789:;<=>?@ABCDEFGXjklnmopqrstuvwxyz{|}~ !"#$%&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRPSTUVWXYZ[\]^_`abcdefghijkklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 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 { |}~      !"#$%&'&(&)&*&+&,&-&.&/01020304056789:;:<:=:>:?:@:ABCDEFG:H:I:J:KL:M:NOPOQORSTUVWXYZ[\]^_`abacde&f&g&h&i&j&k&lmndodpOqrsrtrurvwxyz{|}~no         V   *mixed-types-num-0.3-4Y6cmmyI8h7F8Obp8qnmmBMixedTypesNumPreludeNumeric.MixedTypes.LiteralsUtils.TH.DeclForTypesControl.CollectErrorsNumeric.CollectErrorsNumeric.MixedTypes.BoolNumeric.MixedTypes.EqNumeric.MixedTypes.OrdNumeric.MixedTypes.MinMaxAbsNumeric.MixedTypes.AddSubNumeric.MixedTypes.RoundNumeric.MixedTypes.RingNumeric.MixedTypes.FieldNumeric.MixedTypes.ElementaryNumeric.MixedTypes.Complex Numeric.MixedTypes.PreludeHidingPrelude fromInteger fromRationalbaseGHC.Real%*convertible-1.1.1.0-2huR7S7QXmPJFQt2mlnJqBData.Convertible.Base convError ConvertResult ConvertError declForTypes CanExtractCE extractCE CanEnsureCEEnsureCE EnsureNoCEensureCE deEnsureCE ensureNoCE noValueECEprependErrorsECE SuitableForCECanTestErrorsCertainhasCertainError CollectErrorsgetMaybeValueCE getErrorsCEhasCertainErrorCE noValueCEprependErrorsCEce2ConvertResultgetValueIfNoErrorCEfilterValuesWithoutErrorCEgetValueOrThrowErrorsNCElift1CElift2CElift2TCE lift2TLCE$fCanEnsureCEes(->)$fCanEnsureCEesMaybe$fCanEnsureCEes()$fCanEnsureCEesChar$fCanEnsureCEesBool$fCanEnsureCEesDouble$fCanEnsureCEesRatio$fCanEnsureCEesInteger$fCanEnsureCEesInt$fCanEnsureCEesCollectErrors$fArbitraryCollectErrors$fMonadCollectErrors$fApplicativeCollectErrors$fFunctorCollectErrors$fShowCollectErrors CanExtractCN EnsureNoCNEnsureCN CanEnsureCNCN NumErrorsErrorCertaintyLevel ErrorCertainErrorPotentialNumError DivByZero OutOfRangehasCertainErrorCNsample_NumErrors extractCNensureCN deEnsureCN ensureNoCN noValueECNprependErrorsECNnoValueNumErrorCertainECNnoValueNumErrorPotentialECN getErrorsCNgetMaybeValueCN noValueCNnoValueNumErrorCertainCNnoValueNumErrorPotentialCNprependErrorsCNcndeCN~!$fCanTestErrorsCertain[]$fShowErrorCertaintyLevel$fShowNumError $fEqNumError$fEqErrorCertaintyLevelTConvertibleExactlysafeConvertExactly CanBeDouble HasRationals CanBeRationalCanBeInt HasIntegers CanBeIntegerHasIfThenElseSameType HasIfThenElseIfThenElseType ifThenElseintegerintegers fromInteger_!!specCanBeIntegerprintArgsIfFails2intintsrational rationals fromRational_doubledoublesconvertExactlyconvertExactlyTargetSampletInttInteger tRationaltDoubletBooltMaybe tMaybeBooltMaybeMaybeBoolconvertFirstUsingconvertSecondUsing convertFirst convertSecond $fConvertibleExactlyDoubleDouble$fConvertibleExactlyIntDouble!$fConvertibleExactlyIntegerDouble $fConvertibleExactlyIntegerRatio$fConvertibleExactlyIntRatio$fConvertibleExactlyIntegerInt$fConvertibleExactlyRatioRatio$fConvertibleExactlyIntInt$fConvertibleExactlyIntInteger"$fConvertibleExactlyIntegerInteger$fHasIfThenElseBoolt'$fConvertibleExactlyDoubleCollectErrors&$fConvertibleExactlyRatioCollectErrors$$fConvertibleExactlyIntCollectErrors($fConvertibleExactlyIntegerCollectErrors%$fConvertibleExactlyBoolCollectErrorsIsBoolCanAndOrSameType CanAndOrWithCanAndOrAsymmetric AndOrTypeand2or2CanAndOrCanTestCertainlyXCanNegSameTypeCanNegNegTypenegateCanTestCertainlyisCertainlyTrueisCertainlyFalseHasBools isNotFalse isNotTruestronglyImplies weaklyImpliesstronglyEquivalentToweaklyEquivalentTospecCanTestCertainlynotspecCanNegBool&&||andor specCanAndOrspecCanAndOrNotMixed specIsBool%$fCanAndOrAsymmetricBoolCollectErrors%$fCanAndOrAsymmetricCollectErrorsBool.$fCanAndOrAsymmetricCollectErrorsCollectErrors$fCanAndOrAsymmetricMaybeBool$fCanAndOrAsymmetricBoolMaybe$fCanAndOrAsymmetricMaybeMaybe$fCanAndOrAsymmetricBoolBool$fCanNegCollectErrors $fCanNegMaybe $fCanNegBool$fCanTestCertainlyCollectErrors$fCanTestCertainlyMaybe$fConvertibleExactlyBoolMaybe$fCanTestCertainlyBool$fConvertibleExactlyBoolBoolHasEqAsymmetric 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$fCanPickNonZeroCollectErrors$fCanPickNonZeroRatio$fCanPickNonZeroInteger$fCanPickNonZeroInt$fCanTestZeroCollectErrors$fCanTestZeroDouble$fCanTestZeroRatio$fCanTestZeroInteger$fCanTestZeroInt$fCanTestIntegerCollectErrors$fCanTestIntegerDouble$fCanTestIntegerRatio$fCanTestIntegerInt$fCanTestIntegerInteger$fCanTestFiniteCollectErrors$fCanTestNaNCollectErrors$fCanTestFiniteRatio$fCanTestNaNRatio$fCanTestFiniteDouble$fCanTestNaNDouble$$fHasEqAsymmetricCollectErrorsDouble$$fHasEqAsymmetricDoubleCollectErrors#$fHasEqAsymmetricCollectErrorsRatio#$fHasEqAsymmetricRatioCollectErrors!$fHasEqAsymmetricCollectErrorsInt!$fHasEqAsymmetricIntCollectErrors%$fHasEqAsymmetricCollectErrorsInteger%$fHasEqAsymmetricIntegerCollectErrors#$fHasEqAsymmetricCollectErrorsMaybe#$fHasEqAsymmetricMaybeCollectErrors"$fHasEqAsymmetricCollectErrorsBool"$fHasEqAsymmetricBoolCollectErrorsHasOrderAsymmetricOrderCompareTypelessThan greaterThanleqgeqHasOrderCertainlyAsymmetricHasOrderCertainlyCNHasOrderCertainlyCEHasOrderCertainlyHasOrder><>=<=?>??=??<=?!>!!=!!<=! specHasOrderspecHasOrderNotMixed.$fHasOrderAsymmetricCollectErrorsCollectErrors$fHasOrderAsymmetricDoubleInt$fHasOrderAsymmetricIntDouble!$fHasOrderAsymmetricDoubleInteger!$fHasOrderAsymmetricIntegerDouble $fHasOrderAsymmetricRatioInteger $fHasOrderAsymmetricIntegerRatio$fHasOrderAsymmetricRatioInt$fHasOrderAsymmetricIntRatio$fHasOrderAsymmetricIntegerInt$fHasOrderAsymmetricIntInteger $fHasOrderAsymmetricDoubleDouble$fHasOrderAsymmetricRatioRatio"$fHasOrderAsymmetricIntegerInteger$fHasOrderAsymmetricIntInt$fHasOrderAsymmetric()() CanTestPosNegisCertainlyPositiveisCertainlyNonNegativeisCertainlyNegativeisCertainlyNonPositive$fCanTestPosNegCollectErrors$fCanTestPosNegDouble$fCanTestPosNegRatio$fCanTestPosNegInteger$fCanTestPosNegInt'$fHasOrderAsymmetricCollectErrorsDouble'$fHasOrderAsymmetricDoubleCollectErrors&$fHasOrderAsymmetricCollectErrorsRatio&$fHasOrderAsymmetricRatioCollectErrors$$fHasOrderAsymmetricCollectErrorsInt$$fHasOrderAsymmetricIntCollectErrors($fHasOrderAsymmetricCollectErrorsInteger($fHasOrderAsymmetricIntegerCollectErrorsCanMinMaxSameType CanMinMaxThisCanMinMaxAsymmetric MinMaxTypeminmax CanMinMaxmaximumminimum specCanMinMaxspecCanMinMaxNotMixed/$fCanMinMaxAsymmetricCollectErrorsCollectErrors$fCanMinMaxAsymmetricMaybeMaybe$fCanMinMaxAsymmetric[][]!$fCanMinMaxAsymmetricRatioInteger!$fCanMinMaxAsymmetricIntegerRatio$fCanMinMaxAsymmetricRatioInt$fCanMinMaxAsymmetricIntRatio$fCanMinMaxAsymmetricIntegerInt$fCanMinMaxAsymmetricIntInteger!$fCanMinMaxAsymmetricDoubleDouble$fCanMinMaxAsymmetricRatioRatio#$fCanMinMaxAsymmetricIntegerInteger$fCanMinMaxAsymmetricIntIntCanAbsSameTypeCanAbsAbsTypeabs specCanNegNum specCanAbs$fCanAbsCollectErrors$fCanAbsDouble $fCanAbsRatio$fCanAbsInteger $fCanAbsInt$fCanNegDouble $fCanNegRatio$fCanNegInteger $fCanNegInt($fCanMinMaxAsymmetricCollectErrorsDouble($fCanMinMaxAsymmetricDoubleCollectErrors'$fCanMinMaxAsymmetricCollectErrorsRatio'$fCanMinMaxAsymmetricRatioCollectErrors%$fCanMinMaxAsymmetricCollectErrorsInt%$fCanMinMaxAsymmetricIntCollectErrors)$fCanMinMaxAsymmetricCollectErrorsInteger)$fCanMinMaxAsymmetricIntegerCollectErrorsCanSubSameType CanSubThisCanSubSubTypesubCanAddSameType CanAddThisCanAddAsymmetricAddTypeaddCanAdd+-sum specCanAddspecCanAddNotMixedspecCanAddSameType specCanSubspecCanSubNotMixed"$fCanSubCollectErrorsCollectErrors$fCanSubMaybeMaybe $fCanSub[][]$fCanSubDoubleRatio$fCanSubRatioDouble$fCanSubDoubleInteger$fCanSubIntegerDouble$fCanSubDoubleInt$fCanSubIntDouble$fCanSubRatioInteger$fCanSubIntegerRatio$fCanSubRatioInt$fCanSubIntRatio$fCanSubIntegerInt$fCanSubIntInteger$fCanSubDoubleDouble$fCanSubRatioRatio$fCanSubIntegerInteger$fCanSubIntInt,$fCanAddAsymmetricCollectErrorsCollectErrors$fCanAddAsymmetricMaybeMaybe$fCanAddAsymmetric[][]$fCanAddAsymmetricDoubleRatio$fCanAddAsymmetricRatioDouble$fCanAddAsymmetricDoubleInteger$fCanAddAsymmetricIntegerDouble$fCanAddAsymmetricDoubleInt$fCanAddAsymmetricIntDouble$fCanAddAsymmetricRatioInteger$fCanAddAsymmetricIntegerRatio$fCanAddAsymmetricRatioInt$fCanAddAsymmetricIntRatio$fCanAddAsymmetricIntegerInt$fCanAddAsymmetricIntInteger$fCanAddAsymmetricDoubleDouble$fCanAddAsymmetricRatioRatio $fCanAddAsymmetricIntegerInteger$fCanAddAsymmetricIntInt%$fCanAddAsymmetricCollectErrorsDouble%$fCanAddAsymmetricDoubleCollectErrors$fCanSubCollectErrorsDouble$fCanSubDoubleCollectErrors$$fCanAddAsymmetricCollectErrorsRatio$$fCanAddAsymmetricRatioCollectErrors$fCanSubCollectErrorsRatio$fCanSubRatioCollectErrors"$fCanAddAsymmetricCollectErrorsInt"$fCanAddAsymmetricIntCollectErrors$fCanSubCollectErrorsInt$fCanSubIntCollectErrors&$fCanAddAsymmetricCollectErrorsInteger&$fCanAddAsymmetricIntegerCollectErrors$fCanSubCollectErrorsInteger$fCanSubIntegerCollectErrorsHasIntegerBounds integerBoundsCanRoundproperFractiontruncateroundceilingfloor specCanRoundspecHasIntegerBounds$fHasIntegerBoundsInt$fHasIntegerBoundsInteger$fHasIntegerBoundsDouble$fHasIntegerBoundsRatio$fCanRoundDouble$fCanRoundRatio CanPowCNByCanPowByCanPow PowTypeNoCNPowTypepowNoCNpowCanMulSameTypeCanMulByCanMulAsymmetricMulTypemulCanMulOrderedCertainlyRing OrderedRingRingCanAddSubMulBy*product specCanMulspecCanMulNotMixedspecCanMulSameType^^! integerPowCN powUsingMul specCanPow"$fCanPowCollectErrorsCollectErrors$fCanPowMaybeMaybe$fCanPowDoubleInteger$fCanPowDoubleInt$fCanPowRatioInteger$fCanPowRatioInt$fCanPowIntInt$fCanPowIntInteger$fCanPowIntegerInt$fCanPowIntegerInteger,$fCanMulAsymmetricCollectErrorsCollectErrors$fCanMulAsymmetricMaybeMaybe$fCanMulAsymmetric[][]$fCanMulAsymmetricDoubleRatio$fCanMulAsymmetricRatioDouble$fCanMulAsymmetricDoubleInteger$fCanMulAsymmetricIntegerDouble$fCanMulAsymmetricDoubleInt$fCanMulAsymmetricIntDouble$fCanMulAsymmetricRatioInteger$fCanMulAsymmetricIntegerRatio$fCanMulAsymmetricRatioInt$fCanMulAsymmetricIntRatio$fCanMulAsymmetricIntegerInt$fCanMulAsymmetricIntInteger$fCanMulAsymmetricDoubleDouble$fCanMulAsymmetricRatioRatio $fCanMulAsymmetricIntegerInteger$fCanMulAsymmetricIntInt#$fOrderedCertainlyRingCollectErrors$fOrderedCertainlyRingRatio$$fOrderedCertainlyRingCollectErrors0$fOrderedCertainlyRingInteger$fOrderedRingCollectErrors$fOrderedRingRatio$fOrderedRingCollectErrors0$fOrderedRingInteger$fRingCollectErrors $fRingRatio$fRingCollectErrors0 $fRingInteger%$fCanMulAsymmetricCollectErrorsDouble%$fCanMulAsymmetricDoubleCollectErrors$fCanPowCollectErrorsDouble$fCanPowDoubleCollectErrors$$fCanMulAsymmetricCollectErrorsRatio$$fCanMulAsymmetricRatioCollectErrors$fCanPowCollectErrorsRatio$fCanPowRatioCollectErrors"$fCanMulAsymmetricCollectErrorsInt"$fCanMulAsymmetricIntCollectErrors$fCanPowCollectErrorsInt$fCanPowIntCollectErrors&$fCanMulAsymmetricCollectErrorsInteger&$fCanMulAsymmetricIntegerCollectErrors$fCanPowCollectErrorsInteger$fCanPowIntegerCollectErrorsCanDivCNSameType CanDivCNByCanDivSameTypeCanDivByCanRecipCNSameTypeCanRecipSameTypeCanRecipCanDiv DivTypeNoCNDivType divideNoCNdivideOrderedCertainlyField OrderedFieldFieldCanAddSubMulDivCNBy//!recip specCanDivspecCanDivNotMixed$fCanDivDoubleDouble$fCanDivRatioInteger$fCanDivIntegerRatio$fCanDivRatioInt$fCanDivIntRatio$fCanDivIntegerInt$fCanDivIntInteger$fCanDivRatioRatio$fCanDivIntegerInteger$fCanDivIntInt$$fOrderedCertainlyFieldCollectErrors$fOrderedCertainlyFieldRatio$fOrderedFieldCollectErrors$fOrderedFieldRatio$fFieldCollectErrors $fFieldRatiopowUsingMulRecip"$fCanDivCollectErrorsCollectErrors$fCanDivMaybeMaybe $fCanDiv[][]$fCanDivDoubleRatio$fCanDivRatioDouble$fCanDivDoubleInt$fCanDivIntDouble$fCanDivDoubleInteger$fCanDivIntegerDouble$fCanDivCollectErrorsDouble$fCanDivDoubleCollectErrors$fCanDivCollectErrorsRatio$fCanDivRatioCollectErrors$fCanDivCollectErrorsInt$fCanDivIntCollectErrors$fCanDivCollectErrorsInteger$fCanDivIntegerCollectErrorsCanSinCosSameType CanSinCos SinCosTypecossinCanLogCNSameTypeCanLogSameTypeCanLogLogTypelogCanExpSameTypeCanExpExpTypeexpCanSqrtCNSameTypeCanSqrtSameTypeCanSqrtSqrtTypesqrtspecCanSqrtRealspecCanExpRealspecCanLogRealpowUsingExpLogspecCanSinCosRealapproxPi$fCanSinCosCollectErrors$fCanSinCosDouble$fCanPowIntDouble$fCanPowIntegerDouble$fCanPowRatioDouble$fCanPowDoubleRatio$fCanPowDoubleDouble$fCanLogCollectErrors$fCanLogDouble$fCanExpCollectErrors$fCanExpDouble$fCanSqrtCollectErrors$fCanSqrtDoubletComplex$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$fHasEqAsymmetricIntegerComplexGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$ fromIntegral realToFracGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpredIntegral toIntegerquotremdivmodquotRemdivModMonad>>=>>returnfailFunctorfmap<$GHC.ReadRead readsPrecreadListReal toRational GHC.Float RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisDenormalizedisNegativeZeroisIEEEatan2GHC.ShowShowshow showsPrecshowList Applicativepure<*>*><* Data.FoldableFoldablefoldrfoldMapnulllengthfoldlfoldl1foldr1elemData.Traversable TraversabletraversemapM sequenceAsequenceMonoidmemptymappendmconcat GHC.TypesBoolTrueFalseCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerMaybeNothingJustOrderingLTEQGTRationalIOWord Data.EitherEitherLeftRightStringShowSreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar Text.ReadreadreadsGHC.IO.ExceptionioErrornotElemallany concatMapconcat sequence_mapM_GHC.IOFilePath userErrorIOErroreither Data.OldListunwordswordsunlineslineslex readParenText.ParserCombinators.ReadPReadS Data.Functor<$>lcmgcdoddeven showParen showStringshowCharshowsunzip3unzipzipWith3zipWithzip3lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemaybeuncurrycurryGHC.NumsubtractasTypeOfuntil$!flip.constid=<<GHC.Err undefinederrorWithoutStackTraceerror_testIf1 _testNeg1 _testAndOr1 _testAndOr2 _testAndOr3scEquals$D:R:EqCompareTypeCollectErrorsDouble'D:R:OrderCompareTypeCollectErrorsDouble GHC.ClassesCanNegXCanAbsX!D:R:MinMaxTypeCollectErrorsDoubleD:R:AddTypeCollectErrorsDoubleRealFracHasIntegerBoundsX CanRoundX^^RingPrepowCND:R:MulTypeCollectErrorsDoubledivideCND:R:DivTypeDoubleRatioD:R:DivTypeCollectErrorsDoublepiD:R:DivTypeComplexDouble