úÎ-$&İV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU(c) Edward Kmett 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone059;<=?DRZAn approximate number, with a likely interval, an expected value and a lower bound on the log6 of probability that the answer falls in the interval.NB:@ The probabilities associated with confidence are stored in the log domain.*VWXY Z[ \]^ !"#$%      VWXY \]Z^[ !"#$%(c) Edward Kmett 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone 'Calculate an approximate log.*Calculate an approximate exp.-Calculate an approximate pow.0MBorchardt s Algorithm from Dead Reckoning: Calculating without instruments ./This is a remarkably bad approximate logarithm.'@ had better outperform it! It is provided merely for comparison.&'()*+,-./_`abcdefghijklmnop012 &'()*+,-./0 &'()*+,-./0& '()*+,-./_`abcdefghijklmnop012(c) Edward Kmett 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone 05<=DR3`A quantity with a lower-bound on its probability mass. This represents a 'probable value' as a qG that you can use to calculate progressively less likely consequences.NB:ÿ These probabilities are all stored in the log domain. This enables us to retain accuracy despite very long multiplication chains. We never add these probabilities so the additional overhead of working in the log domain is never incurred, except on transitioning in and out.7This is most useful for discrete types, such as small r instances or a s t like u.Also note that (5) and (6)l are able to use knowledge about the function to get better precision on their results than naively using liftA2 (v)5Calculate the logical and. of two booleans with confidence lower bounds.6Calculate the logical or. of two booleans with confidence lower bounds.7Calculate the exclusive or. of two booleans with confidence lower bounds.!34wx56789:;<=>?@ABCDEFyzGHIJKLMNO34567346573456789:;<=>?@ABCDEFywzxGHIJKLMNO536276(c) Edward Kmett 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone  &'()*+,-./034567{      !"#$%&'()*+,-./01234567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvtwxtyzty{|}~|€‚ƒ„…&approximate-0.3-BtS1Ui2rSLSAFeqUYrXWfsData.Approximate.TypeData.Approximate.NumericsData.Approximate.MassData.Approximate Approximate$fEqApproximate$fShowApproximate$fReadApproximate$fDataApproximate$fGenericApproximateHasApproximate approximate confidenceestimatehilowithMinwithMaxexactzeroone$fNumApproximate$fApplicativeApproximate$fApplyApproximate$fPointedApproximate$fCopointedApproximate$fTraversableApproximate$fFoldableApproximate$fFunctorApproximate$fNFDataApproximate$fVectorVectorApproximate$fMVectorMVectorApproximate$fUnboxApproximate$fSerial1Approximate$fSerialApproximate$fHashable1Approximate$fHashableApproximate$fSafeCopyApproximate$fSerializeApproximate$fBinaryApproximate$fHasApproximateApproximateaFastflogflog_lbflog_ubfexpfexp_lbfexp_ubfpowfpow_lbfpow_ubblog $fFastDouble $fFastFloatMass&?|?^?$fComonadApplyMass $fComonadMass $fExtendMass $fMonadMass $fBindMass$fSemigroupMass $fMonoidMass$fApplicativeMass$fCopointedMass $fPointedMass $fApplyMass$fTraversableMass $fNFDataMass$fVectorVectorMass$fMVectorMVectorMass$fFoldableMass $fFunctorMass $fSerialMass $fSerial1Mass$fHashable1Mass$fHashableMass$fSafeCopyMass$fSerializeMass $fBinaryMass$fEqMass $fOrdMass $fShowMass $fReadMass $fDataMass $fGenericMass _confidence_lo _estimate_hi V_ApproximateMV_ApproximateisD:R:VectorApproximate0D:R:MVectorsApproximate0 logf_fast_ub logf_fast_lb logf_fast log_fast_ub log_fast_lblog_fast expf_fast_ub expf_fast_lbbetter_expf_fast exp_fast_ub exp_fast_lbbetter_exp_fastbetter_powf_fast_precise powf_fast_ub powf_fast_lbbetter_pow_fast_precise pow_fast_ub pow_fast_lbbaseGHC.BaseMonadGHC.RealIntegralGHC.EnumBoundedEnumghc-prim GHC.TypesBool GHC.Classes&&V_MassMV_MassD:R:VectorMass0D:R:MVectorsMass0