!AU9o      !"#$%&'()*+,-./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{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn$Copyright (C) 2009-2011 John GoerzenBSD3$John Goerzen <jgoerzen@complete.org> provisionalportableSafe+,8=>?@AHOUVXE*mixed-types-num)How we indicate that there was an error. mixed-types-num?A typeclass that represents something that can be converted. A Convertible a b instance represents an a that can be converted to a b. mixed-types-numConvert a to bT, returning Right on success and Left on error. For a simpler interface, see . mixed-types-num$The result of a safe conversion via . mixed-types-numConvert from one type of data to another. Raises an exception if there is an error with the conversion. For a function that does not raise an exception in that case, see . None+,8=>?@AHOUVXg 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 $Copyright (C) 2009-2011 John GoerzenBSD3$John Goerzen <jgoerzen@complete.org> provisionalportableSafe+,8=>?@AHOUVX{@mixed-types-numDUtility function to perform bounds checking as part of a conversion.dDoes this be examining the bounds of the destination type, converting to the type of the source via Z, comparing to the source value. Results in an error if the conversion is out of bounds. mixed-types-numxUseful for defining conversions that are implemented in terms of other conversions via an intermediary type. Instead of: instance Convertible CalendarTime POSIXTime where safeConvert a = do r <- safeConvert a safeConvert (r :: ClockTime)we can now write: einstance Convertible CalendarTime POSIXTime where safeConvert = convertVia (undefined::ClockTime)zwhich does the same thing -- converts a CalendarTime to a ClockTime, then a ClockTime to a POSIXTime, both using existing  instances.mixed-types-numFunction to do the conversionmixed-types-num Input datamixed-types-numResultmixed-types-num<Dummy data to establish intermediate type - can be undefinedmixed-types-num Input valuemixed-types-numResult$Copyright (C) 2009-2011 John GoerzenBSD3$John Goerzen <jgoerzen@complete.org> provisionalportableSafe+,8=>?@AHOUVX}(A type of numeric errors to be collected(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX# 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=>?@AHOUVX   !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=>?@AHOUVXmixed-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.mixed-types-numconversion function mixed-types-numsame-type operation mixed-types-nummixed-type operation mixed-types-numconversion function mixed-types-numsame-type operation mixed-types-nummixed-type operation mixed-types-numsame-type operation mixed-types-nummixed-type operation mixed-types-numsame-type operation mixed-types-nummixed-type operation 3     3      "Bottom-up typed Boolean operations(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX@%mixed-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 Bool(mixed-types-numBinary logical A and B( for generalised Booleans. For example: V (Just True) && False = Just False (Just (Just True)) || False = (Just (Just True)) -mixed-types-num5Compound type constraint useful for test definition. /mixed-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 2mixed-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.8mixed-types-num6If l is certainly True, then r is also certainly True.9mixed-types-num6If l is certainly True, then r is not certainly False.<mixed-types-numMHSpec properties that each implementation of CanTestCertainly should satisfy.=mixed-types-num A synonym of 1. >mixed-types-numKHSpec properties that each Boolean implementation of CanNeg should satisfy.?mixed-types-num A synonym of *. @mixed-types-num A synonym of +. Cmixed-types-numEHSpec properties that each implementation of CanAndOr should satisfy.Dmixed-types-numEHSpec properties that each implementation of CanAndOr should satisfy.Emixed-types-numCHSpec properties that each implementation of IsBool should satisfy.!%&'()*+,-./0123456789:;<=>?@ABCDE!%E5234<-768:9;/01=.>,()*+?@'&ABCD?3@2 !Bottom-up typed order comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXElmixed-types-num-HSpec properties that each implementation of _ should satisfy.mmixed-types-num-HSpec properties that each implementation of _ should satisfy.UVWXYZ[\]^_`abcdefghijklm~_UVWXYZ`acb[^]\gefdkijhlm~ `4a4b4c4d4e4f4g4h4i4j4k4 $Bottom-up typed equality comparisons(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX3mixed-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=>?@AHOUVXJmixed-types-numA replacement for Prelude's o and p. 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 q. If Num tD, then one can use the default implementation to mirror Prelude's abs.rmixed-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=>?@AHOUVXmixed-types-num#A replacement for Prelude's binary s.If  CanNeg t2 and CanAdd t1 (NegType t2)6, then one can use the default implementation via a-b = a + (-b).$mixed-types-numA replacement for Prelude's t. 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 CanAdd should satisfy.,mixed-types-numCHSpec properties that each implementation of CanAdd should satisfy.-mixed-types-numKHSpec properties that each implementation of CanAddSameType should satisfy..mixed-types-numCHSpec properties that each implementation of CanSub should satisfy./mixed-types-numCHSpec properties that each implementation of CanSub should satisfy. !"#$%&'()*+,-./'$%&#"(*+,- !)./(6)6+Bottom-up typed multiplication and exponent(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXhmixed-types-num#A replacement for Prelude's binary u and v. If Num t1 and  Integral t2D, then one can use the default implementation to mirror Prelude's ^.omixed-types-numA replacement for Prelude's w. If t1 = t2 and Num t1D, then one can use the default implementation to mirror Prelude's *.ymixed-types-numCHSpec properties that each implementation of CanMul should satisfy.zmixed-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.fghjilkmnopqrstuvwxyz{|}~vutsropqnmwxyz{hjilkgf|}~w7|8}8"Bottom-up typed round, floor, etc.(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVX"mixed-types-numA replacement for Prelude's xJ 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=>?@AHOUVX*mixed-types-num#A replacement for Prelude's binary y. 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=>?@AHOUVX2mixed-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."Bottom-up typed pi, sqrt, cos, etc(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXG mixed-types-numA replacement for Prelude's z 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.mixed-types-numA replacement for Prelude's }. If  Floating tD, then one can use the default implementation to mirror Prelude's exp.#mixed-types-numA replacement for Prelude's ~. If  Floating tD, then one can use the default implementation to mirror Prelude's sqrt.&mixed-types-numDHSpec properties that each implementation of CanSqrt should satisfy.'mixed-types-numCHSpec properties that each implementation of CanExp should satisfy.(mixed-types-numCHSpec properties that each implementation of CanLog should satisfy.*mixed-types-numFHSpec properties that each implementation of CanSinCos should satisfy.Derived partially from Shttp://math.stackexchange.com/questions/1303044/axiomatic-definition-of-sin-and-cos+mixed-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. !"#$%&'()*+#$%"!& '()*+Instances for Data.Complex(c) Michal KonecnyBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXJ99#Bottom-up typed numeric expressions"(c) Michal Konecny, Pieter CollinsBSD3mikkonecny@gmail.com experimentalportableNone+,8=>?@AHOUVXM=   !nm"#{zyxwvutsrqp$?%&bc^a_`]'ECDB()*96+,-./0781<=>2345:;@AFGHIJKLMNOPQRSTUVWXYZ[\defghijklo|}~     %&'()*+,-./0123456789:;<=>?@ABCDEUVWXYZ[\]^_`abcdefghijklm~    !"#$%&'()*+,-./fghjilkmnopqrstuvwxyz{|}~ !"#$%&'()*+9 !"#$#%&'()*)+),)-./012343536789:;<=)>)?@ABC3DEFGHIJKLMNOPQPRPSPTPUVWXYZP[3\P]P^_`PaYbYcPd_e_fPgPhPiGjkGlLmLnLoLp!q!r!s!t!u!v!w!x!y!z!{!|}~}}JJJJJJJJJJJJJJ_BBBBEEEEEEEEEEEE33333))))))GGGGGG##      !"#$%&'()*+,-./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 { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !7 WV3333EDEEEJENESE,mixed-types-num-0.4.0-7Sj36CWMv685uto8GBWgTQ Numeric.MixedTypes.PreludeHidingMixedTypesNumPreludeData.Convertible.BaseControl.CollectErrorsData.Convertible.UtilsData.Convertible.Instances.NumNumeric.CollectErrorsUtils.TH.DeclForTypesNumeric.MixedTypes.LiteralsNumeric.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 ConvertErrorconvSourceValueconvSourceType convDestTypeconvErrorMessage Convertible safeConvert ConvertResultconvert convErrorprettyConvertError$fErrorConvertError$fEqConvertError$fReadConvertError$fShowConvertError 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$fCanEnsureCEesCollectErrorsboundedConversion convertVia$fConvertibleIntegerInteger$fConvertibleWord64Char$fConvertibleCharWord64$fConvertibleWord32Char$fConvertibleCharWord32$fConvertibleWord16Char$fConvertibleCharWord16$fConvertibleWord8Char$fConvertibleCharWord8$fConvertibleWordChar$fConvertibleCharWord$fConvertibleInt64Char$fConvertibleCharInt64$fConvertibleInt32Char$fConvertibleCharInt32$fConvertibleInt16Char$fConvertibleCharInt16$fConvertibleInt8Char$fConvertibleCharInt8$fConvertibleIntChar$fConvertibleCharInt$fConvertibleIntegerChar$fConvertibleCharInteger$fConvertibleRatioDouble$fConvertibleDoubleRatio$fConvertibleRatioFloat$fConvertibleFloatRatio$fConvertibleDoubleFloat$fConvertibleFloatDouble$fConvertibleRatioInteger$fConvertibleFloatInteger$fConvertibleDoubleInteger$fConvertibleIntegerRatio$fConvertibleIntegerFloat$fConvertibleIntegerDouble$fConvertibleWord64Integer$fConvertibleIntegerWord64$fConvertibleWord32Integer$fConvertibleIntegerWord32$fConvertibleWord16Integer$fConvertibleIntegerWord16$fConvertibleWord8Integer$fConvertibleIntegerWord8$fConvertibleWordInteger$fConvertibleIntegerWord$fConvertibleInt64Integer$fConvertibleIntegerInt64$fConvertibleInt32Integer$fConvertibleIntegerInt32$fConvertibleInt16Integer$fConvertibleIntegerInt16$fConvertibleInt8Integer$fConvertibleIntegerInt8$fConvertibleIntInteger$fConvertibleIntegerInt$fConvertibleWord64Word32$fConvertibleWord64Word16$fConvertibleWord64Word8$fConvertibleWord64Word$fConvertibleWord64Int64$fConvertibleWord64Int32$fConvertibleWord64Int16$fConvertibleWord64Int8$fConvertibleWord64Int$fConvertibleWord32Word64$fConvertibleWord32Word16$fConvertibleWord32Word8$fConvertibleWord32Word$fConvertibleWord32Int64$fConvertibleWord32Int32$fConvertibleWord32Int16$fConvertibleWord32Int8$fConvertibleWord32Int$fConvertibleWord16Word64$fConvertibleWord16Word32$fConvertibleWord16Word8$fConvertibleWord16Word$fConvertibleWord16Int64$fConvertibleWord16Int32$fConvertibleWord16Int16$fConvertibleWord16Int8$fConvertibleWord16Int$fConvertibleWord8Word64$fConvertibleWord8Word32$fConvertibleWord8Word16$fConvertibleWord8Word$fConvertibleWord8Int64$fConvertibleWord8Int32$fConvertibleWord8Int16$fConvertibleWord8Int8$fConvertibleWord8Int$fConvertibleWordWord64$fConvertibleWordWord32$fConvertibleWordWord16$fConvertibleWordWord8$fConvertibleWordInt64$fConvertibleWordInt32$fConvertibleWordInt16$fConvertibleWordInt8$fConvertibleWordInt$fConvertibleInt64Word64$fConvertibleInt64Word32$fConvertibleInt64Word16$fConvertibleInt64Word8$fConvertibleInt64Word$fConvertibleInt64Int32$fConvertibleInt64Int16$fConvertibleInt64Int8$fConvertibleInt64Int$fConvertibleInt32Word64$fConvertibleInt32Word32$fConvertibleInt32Word16$fConvertibleInt32Word8$fConvertibleInt32Word$fConvertibleInt32Int64$fConvertibleInt32Int16$fConvertibleInt32Int8$fConvertibleInt32Int$fConvertibleInt16Word64$fConvertibleInt16Word32$fConvertibleInt16Word16$fConvertibleInt16Word8$fConvertibleInt16Word$fConvertibleInt16Int64$fConvertibleInt16Int32$fConvertibleInt16Int8$fConvertibleInt16Int$fConvertibleInt8Word64$fConvertibleInt8Word32$fConvertibleInt8Word16$fConvertibleInt8Word8$fConvertibleInt8Word$fConvertibleInt8Int64$fConvertibleInt8Int32$fConvertibleInt8Int16$fConvertibleInt8Int$fConvertibleIntWord64$fConvertibleIntWord32$fConvertibleIntWord16$fConvertibleIntWord8$fConvertibleIntWord$fConvertibleIntInt64$fConvertibleIntInt32$fConvertibleIntInt16$fConvertibleIntInt8$fConvertibleWord64Ratio$fConvertibleRatioWord64$fConvertibleWord32Ratio$fConvertibleRatioWord32$fConvertibleWord16Ratio$fConvertibleRatioWord16$fConvertibleWord8Ratio$fConvertibleRatioWord8$fConvertibleWordRatio$fConvertibleRatioWord$fConvertibleInt64Ratio$fConvertibleRatioInt64$fConvertibleInt32Ratio$fConvertibleRatioInt32$fConvertibleInt16Ratio$fConvertibleRatioInt16$fConvertibleInt8Ratio$fConvertibleRatioInt8$fConvertibleIntRatio$fConvertibleRatioInt$fConvertibleWord64Float$fConvertibleFloatWord64$fConvertibleWord32Float$fConvertibleFloatWord32$fConvertibleWord16Float$fConvertibleFloatWord16$fConvertibleWord8Float$fConvertibleFloatWord8$fConvertibleWordFloat$fConvertibleFloatWord$fConvertibleInt64Float$fConvertibleFloatInt64$fConvertibleInt32Float$fConvertibleFloatInt32$fConvertibleInt16Float$fConvertibleFloatInt16$fConvertibleInt8Float$fConvertibleFloatInt8$fConvertibleIntFloat$fConvertibleFloatInt$fConvertibleWord64Double$fConvertibleDoubleWord64$fConvertibleWord32Double$fConvertibleDoubleWord32$fConvertibleWord16Double$fConvertibleDoubleWord16$fConvertibleWord8Double$fConvertibleDoubleWord8$fConvertibleWordDouble$fConvertibleDoubleWord$fConvertibleInt64Double$fConvertibleDoubleInt64$fConvertibleInt32Double$fConvertibleDoubleInt32$fConvertibleInt16Double$fConvertibleDoubleInt16$fConvertibleInt8Double$fConvertibleDoubleInt8$fConvertibleIntDouble$fConvertibleDoubleInt 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