C      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ 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 { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 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 RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%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[\]^_`abcdefghijkNone)*69:;<=DKQRT 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 6Translate 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.7Translate 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.8Translate 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.:OConstruct an empty wrapper indicating that given error has certainly occurred. ;JConstruct an empty wrapper indicating that given error may have occurred. ?OConstruct an empty wrapper indicating that given error has certainly occurred. @JConstruct an empty wrapper indicating that given error may have occurred. BWrap a value in the CollectNumErrors wrapper. CBAn unsafe way to get a value out of the CollectNumErrors wrapper. DBAn unsafe way to get a value out of the CollectNumErrors wrapper. )*+,-./0123456789:;<=>?@ABCDEF)*+,-./0142356789:;<=>?@ABCD./01234-5,+*)678>?@=<A9:;BCD)*+,-./0123456789:;<=>?@ABCDEF(Fixed-type numeric literals, conversions(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRTI!A runtime representative of type t>. Used for specialising polymorphic tests to concrete types.KDefine 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.S*Restore if-then-else with RebindableSyntaxUReplacement for } using the RebindableSyntax extension. This version of fromInteger arranges that integer literals are always of type  .VReplacement for  using the RebindableSyntax extension. This version of fromRational arranges that rational literals are always of type . [IHSpec properties that each implementation of CanBeInteger should satisfy.4IJKLMNOPQRSTUVlWXYZ[\]^_`abcdefghijklconversion function same-type operation mixed-type operation mconversion function same-type operation mixed-type operation nsame-type operation mixed-type operation osame-type operation mixed-type operation pqrstuvwxyz{*IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno+UVSTRWXQYP]^O_`NaMbcKLLdZ[\IJefghijknolm1IJKLLMNOPQRSTUVlWXYZ[\]^_`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 Bool5Compound type constraint useful for test definition. Binary 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. 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.7mnopq##0mnopq32$Bottom-up typed equality comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT5Compound type constraint useful for test definition. BHSpec 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.Rr%-Fr44444!Bottom-up typed order comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT5Compound type constraint useful for test definition. '-HSpec properties that each implementation of  should satisfy.(-HSpec properties that each implementation of  should satisfy.4 !"#$%&'()*+,-./0123456789:;<=>?@As !"#$%&'(89:;<'" !&$%#'(89:;<9:;<+  !"#$%&'()*+,-./0123456789:;<9:;<=>?@As 44444 4!4"4#4$4%4&4  Bottom-up typed min, max and abs(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT J5Compound type constraint useful for test definition. K5Compound type constraint useful for test definition. NA replacement for Prelude's t and u. If t1 = t2 and Ord t1D, then one can use the default implementation to mirror Prelude's min and max.UFHSpec properties that each implementation of CanMinMax should satisfy.VFHSpec properties that each implementation of CanMinMax should satisfy.eA replacement for Prelude's v. If Num tD, then one can use the default implementation to mirror Prelude's abs.w5Compound type constraint useful for test definition. hKHSpec properties that each numeric implementation of CanNeg should satisfy.iCHSpec properties that each implementation of CanAbs should satisfy.,JKLMNOPQRSTUVWXYZ[\]^_`abcxdefgwhijklmnopqryJKLMNOPQRSTUVdefghiRNOPQPQMLTSUVKJefggdhi'JKLMNOPQPQRSTUVWXYZ[\]^_`abcxdefggwhijklmnopqry (Bottom-up typed addition and subtraction(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT {5Compound type constraint useful for test definition. ~#A replacement for Prelude's binary z.If  CanNeg t2 and CanAdd t1 (NegType t2)6, then one can use the default implementation via a-b = a + (-b).5Compound type constraint useful for test definition. 5Compound type constraint useful for test definition. 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.={|}~|{|}~~}|{9{|}~|66 "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 5Compound type constraint useful for test definition. #A replacement for Prelude's binary  and . If Num t1 and  Integral t2D, then one can use the default implementation to mirror Prelude's ^.5Compound type constraint useful for test definition. A replacement for Prelude's . If t1 = t2 and Num t1D, then one can use the default implementation to mirror Prelude's *.Like 6 but throwing an exception if the power is undefined. 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.CHSpec properties that each implementation of CanPow should satisfy.;     7     788 Bottom-up typed division(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT5Compound type constraint useful for test definition. '#A replacement for Prelude's binary . If t1 = t2 and  Fractional t1D, then one can use the default implementation to mirror Prelude's /.4CHSpec properties that each implementation of CanDiv should satisfy.5CHSpec properties that each implementation of CanDiv should satisfy., !"#$%&'()*+,-./0123456789:;<=>?@ABC !"#$%&'()*+,-./012345@0/.-,'(*)++#!" &%$123@45( !"#$%&'(*)++,-./0123456789:;<=>?@ABC1727"Bottom-up typed pi, sqrt, cos, etc(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT SA replacement for Prelude's  and . If  Floating tD, then one can use the default implementation to mirror Prelude's sin, cos.YA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's log.]A replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's exp.bA replacement for Prelude's . If  Floating tD, then one can use the default implementation to mirror Prelude's sqrt.eDHSpec properties that each implementation of CanSqrt should satisfy.fCHSpec properties that each implementation of CanExp should satisfy.gCHSpec properties that each implementation of CanLog should satisfy.iFHSpec properties that each implementation of CanSinCos should satisfy.Derived partially from Shttp://math.stackexchange.com/questions/1303044/axiomatic-definition-of-sin-and-cosj&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.*RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwRSTVUWXYZ[\]^_`abcdefghijbcdda`e]^__\fYZ[[XWghSTUUVVRij!RSTUUVVWXYZ[[\]^__`abcddefghijklmnopqrstuvwInstances for Data.Complex(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT5xyz{|}~5xyz{|}~#Bottom-up typed numeric expressions"(c) Michal Konecny, Pieter CollinsBSD3mikkonecny@gmail.com experimentalportableNone)*69:;<=DKQRT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk)*+,-./0142356789:;<=>?@ABCDIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno !"#$%&'(89:;<JKLMNOPQRSTUVdefghi{|}~ !"#$%&'()*+,-./012345@RSTVUWXYZ[\]^_`abcdefghij !"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJHKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ] ^ _ ` 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 defghijklmnopqrstuvwxyz{|}~              !"!#!$!%!&!'!()*+,-.!/!0!1!23!4!5676869:;<=>?@ABCDEFGHIHJKL M N O P Q R STUKVKW6XYZY[Y\Y]^_`abcdefghijklmnopqrstuvwxyz{|}~cdz         D       hinrw)mixed-types-num-0.2-Aczd8g8DDjEUlt0rDoC0FMixedTypesNumPreludeNumeric.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 CanEnsureCEEnsureCE EnsureNoCEensureCE deEnsureCE ensureNoCE noValueECE SuitableForCE CollectErrorsgetMaybeValueCE getErrorsCE noValueCEprependErrorsCEce2ConvertResultgetValueIfNoErrorCEfilterValuesWithoutErrorCEgetValueOrThrowErrorsNCElift1CElift2CElift2TCE lift2TLCE$fCanEnsureCEesMaybe$fCanEnsureCEes()$fCanEnsureCEesChar$fCanEnsureCEesBool$fCanEnsureCEesDouble$fCanEnsureCEesRatio$fCanEnsureCEesInteger$fCanEnsureCEesInt$fCanEnsureCEesCollectErrors$fArbitraryCollectErrors$fMonadCollectErrors$fApplicativeCollectErrors$fFunctorCollectErrors$fShowCollectErrors EnsureNoCNEnsureCN CanEnsureCNCN NumErrorsErrorCertaintyLevel ErrorCertainErrorPotentialNumError DivByZero OutOfRangesample_NumErrorsensureCN deEnsureCN ensureNoCN noValueECNnoValueNumErrorCertainECNnoValueNumErrorPotentialECN getErrorsCNgetMaybeValueCN noValueCNnoValueNumErrorCertainCNnoValueNumErrorPotentialCNprependErrorsCNcndeCN~!$fShowErrorCertaintyLevel$fShowNumError $fEqNumError$fEqErrorCertaintyLevelTConvertibleExactlysafeConvertExactly CanBeDouble HasRationals CanBeRationalCanBeInt HasIntegers CanBeInteger HasIfThenElse ifThenElseintegerintegers fromInteger_!!specCanBeIntegerprintArgsIfFails2intintsrational rationals fromRational_doubledoublesconvertExactlytInttInteger tRationaltDoubletBool tMaybeBooltMaybeMaybeBoolconvertFirstUsingconvertSecondUsing convertFirst convertSecond $fConvertibleExactlyDoubleDouble$fConvertibleExactlyIntDouble!$fConvertibleExactlyIntegerDouble $fConvertibleExactlyIntegerRatio$fConvertibleExactlyIntRatio$fConvertibleExactlyIntegerInt$fConvertibleExactlyRatioRatio$fConvertibleExactlyIntInt$fConvertibleExactlyIntInteger"$fConvertibleExactlyIntegerInteger$fHasIfThenElseBoolt'$fConvertibleExactlyDoubleCollectErrors&$fConvertibleExactlyRatioCollectErrors$$fConvertibleExactlyIntCollectErrors($fConvertibleExactlyIntegerCollectErrors%$fConvertibleExactlyBoolCollectErrorsIsBool CanAndOrXCanAndOrSameType CanAndOrWithCanAndOrAsymmetric AndOrTypeand2or2CanAndOr CanNegBoolXCanTestCertainlyXCanNegSameTypeCanNegNegTypenegateCanTestCertainlyisCertainlyTrueisCertainlyFalseHasBools isNotFalse isNotTruestronglyImplies weaklyImpliesstronglyEquivalentToweaklyEquivalentTospecCanTestCertainlynotspecCanNegBool&&||andor specCanAndOrspecCanAndOrNotMixed specIsBool%$fCanAndOrAsymmetricBoolCollectErrors%$fCanAndOrAsymmetricCollectErrorsBool.$fCanAndOrAsymmetricCollectErrorsCollectErrors$fCanAndOrAsymmetricMaybeBool$fCanAndOrAsymmetricBoolMaybe$fCanAndOrAsymmetricMaybeMaybe$fCanAndOrAsymmetricBoolBool$fCanNegCollectErrors $fCanNegMaybe $fCanNegBool$fCanTestCertainlyCollectErrors$fCanTestCertainlyMaybe$fConvertibleExactlyBoolMaybe$fCanTestCertainlyBool$fConvertibleExactlyBoolBoolHasEqXHasEqAsymmetric 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"$fHasEqAsymmetricBoolCollectErrors HasOrderXHasOrderAsymmetricOrderCompareTypelessThan greaterThanleqgeqHasOrderCertainlyAsymmetricHasOrderCertainlyCNHasOrderCertainlyCEHasOrderCertainlyHasOrder><>=<=?>??=??<=?!>!!=!!<=! specHasOrderspecHasOrderNotMixed.$fHasOrderAsymmetricCollectErrorsCollectErrors$fHasOrderAsymmetricDoubleInt$fHasOrderAsymmetricIntDouble!$fHasOrderAsymmetricDoubleInteger!$fHasOrderAsymmetricIntegerDouble $fHasOrderAsymmetricRatioInteger $fHasOrderAsymmetricIntegerRatio$fHasOrderAsymmetricRatioInt$fHasOrderAsymmetricIntRatio$fHasOrderAsymmetricIntegerInt$fHasOrderAsymmetricIntInteger $fHasOrderAsymmetricDoubleDouble$fHasOrderAsymmetricRatioRatio"$fHasOrderAsymmetricIntegerInteger$fHasOrderAsymmetricIntInt CanTestPosNegisCertainlyPositiveisCertainlyNonNegativeisCertainlyNegativeisCertainlyNonPositive$fCanTestPosNegCollectErrors$fCanTestPosNegDouble$fCanTestPosNegRatio$fCanTestPosNegInteger$fCanTestPosNegInt'$fHasOrderAsymmetricCollectErrorsDouble'$fHasOrderAsymmetricDoubleCollectErrors&$fHasOrderAsymmetricCollectErrorsRatio&$fHasOrderAsymmetricRatioCollectErrors$$fHasOrderAsymmetricCollectErrorsInt$$fHasOrderAsymmetricIntCollectErrors($fHasOrderAsymmetricCollectErrorsInteger($fHasOrderAsymmetricIntegerCollectErrors CanMinMaxXX CanMinMaxXCanMinMaxSameType 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)$fCanMinMaxAsymmetricIntegerCollectErrorsCanSubXCanSubSameType CanSubThisCanSubSubTypesubCanAddXXCanAddXCanAddSameType 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$fCanRoundRatioCanPowX CanPowCNByCanPowByCanPowPowTypepowCanMulXCanMulSameTypeCanMulByCanMulAsymmetricMulTypemulCanMulOrderedCertainlyRing OrderedRingCertainlyEqRingRingCanAddSubMulBy*^^!product specCanMulspecCanMulNotMixedspecCanMulSameType 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%$fCanMulAsymmetricCollectErrorsDouble%$fCanMulAsymmetricDoubleCollectErrors$fCanPowCollectErrorsDouble$fCanPowDoubleCollectErrors$$fCanMulAsymmetricCollectErrorsRatio$$fCanMulAsymmetricRatioCollectErrors$fCanPowCollectErrorsRatio$fCanPowRatioCollectErrors"$fCanMulAsymmetricCollectErrorsInt"$fCanMulAsymmetricIntCollectErrors$fCanPowCollectErrorsInt$fCanPowIntCollectErrors&$fCanMulAsymmetricCollectErrorsInteger&$fCanMulAsymmetricIntegerCollectErrors$fCanPowCollectErrorsInteger$fCanPowIntegerCollectErrorsCanDivXCanDivCNSameType CanDivCNByCanDivSameTypeCanDivByCanRecipCNSameTypeCanRecipSameTypeCanRecipCanDiv DivTypeNoCNDivType divideNoCNdivideOrderedCertainlyField OrderedFieldCertainlyEqFieldFieldCanAddSubMulDivCNBy//!recip specCanDivspecCanDivNotMixed$fCanDivDoubleDouble$fCanDivRatioInteger$fCanDivIntegerRatio$fCanDivRatioInt$fCanDivIntRatio$fCanDivIntegerInt$fCanDivIntInteger$fCanDivRatioRatio$fCanDivIntegerInteger$fCanDivIntIntpowUsingMulRecip"$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$fCanSqrtDouble$fCanExpComplex$fCanAbsComplex$fCanDivComplexDouble$fCanDivComplexRatio$fCanDivComplexInt$fCanDivComplexInteger$fCanDivDoubleComplex$fCanDivIntComplex$fCanDivRatioComplex$fCanDivIntegerComplex$fCanDivComplexComplex$fCanMulAsymmetricComplexDouble$fCanMulAsymmetricDoubleComplex$fCanMulAsymmetricComplexRatio$fCanMulAsymmetricRatioComplex$fCanMulAsymmetricComplexInt$fCanMulAsymmetricIntComplex $fCanMulAsymmetricComplexInteger $fCanMulAsymmetricIntegerComplex $fCanMulAsymmetricComplexComplex$fCanSubComplexDouble$fCanSubDoubleComplex$fCanSubComplexInt$fCanSubIntComplex$fCanSubComplexRatio$fCanSubRatioComplex$fCanSubComplexInteger$fCanSubIntegerComplex$fCanSubComplexComplex$fCanAddAsymmetricComplexDouble$fCanAddAsymmetricDoubleComplex$fCanAddAsymmetricComplexInt$fCanAddAsymmetricIntComplex$fCanAddAsymmetricComplexRatio$fCanAddAsymmetricRatioComplex $fCanAddAsymmetricComplexInteger $fCanAddAsymmetricIntegerComplex $fCanAddAsymmetricComplexComplex$fCanNegComplex$fCanTestIntegerComplex$fHasEqAsymmetricComplexDouble$fHasEqAsymmetricDoubleComplex$fHasEqAsymmetricComplexInt$fHasEqAsymmetricIntComplex$fHasEqAsymmetricComplexRatio$fHasEqAsymmetricRatioComplex$fHasEqAsymmetricComplexInteger$fHasEqAsymmetricIntegerComplex$fHasEqAsymmetricComplexComplex"$fConvertibleExactlyComplexComplex $fConvertibleExactlyRatioComplex$fConvertibleExactlyIntComplex"$fConvertibleExactlyIntegerComplexGHC.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^^ integerPowCNpowCND:R:MulTypeCollectErrorsDoubleOrderedCertainlyFieldPreOrderedFieldPreCertainlyEqFieldPreFieldPredivideCND:R:DivTypeDoubleRatioD:R:DivTypeCollectErrorsDoublepi CanSinCosXCanLogXCanExpXCanSqrtX