!̒<      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:; "(C) 2015-2018 Claude Heiland-AllenBSD3 experimental non-portableNone2Mg'rounded  mpfr_kind_trounded  mpfr_rnd_trounded  mpfr_uexp_trounded  mpfr_exp_trounded  mpfr_sign_t rounded  mpfr_uprec_t rounded  mpfr_prec_trounded  mpfr_size_trounded  mpfr_ulongrounded  mpfr_longrounded  mpfr_uintrounded mpfr_introunded mpfr_t"roundedDround to nearest, with ties away from zero (mpfr_round) (do not use)#rounded'faithful rounding (not implemented yet)$roundedround away from zero%roundedround toward -Inf&roundedround toward +Inf'roundedround toward zero(rounded#round to nearest, with ties to even0roundedVersion numbers.1  !"#$%&'()*+,-./010/.- ,+ *)('&%$#"! ](C) 2012-2014 Edward Kmett, Daniel Peebles (C) 2013-2017 Claude Heiland-AllenBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNone+gH      !H!      ](C) 2012-2014 Edward Kmett, Daniel Peebles (C) 2013-2017 Claude Heiland-AllenBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNone0jH"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiHihgfedcba`_'^]\[ZY&XWVU%TSRQPONMLKJIHGFEDCBA@$?>=#<;:98765"43210/.-,+*)(](C) 2012-2014 Edward Kmett, Daniel Peebles (C) 2013-2017 Claude Heiland-AllenBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNone5mH"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi(C) 2012 Edward KmettBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNone -.=>?@AFHSX:kroundedtThis class is used to specify the number of bits of precision that are maintained in the significand of a properly   floating point number.jklm (C) 2012-2014 Edward KmettBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNone -.2=@AFHSVXAqrounded!currently unsupported placeholderrrounded roundTiesToEven in IEEE 754-2008srounded roundTowardZero in IEEE 754-2008trounded$roundTowardPositive in IEEE 754-2008urounded$roundTowardNegative in IEEE 754-2008vroundedround away from zerowrounded!currently unsupported placeholder nopqrstuvwx ](C) 2012-2014 Edward Kmett, Daniel Peebles (C) 2013-2018 Claude Heiland-AllenBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNone -.FHISXeayroundedRA properly rounded floating-point number with a given rounding mode and precision.You can <- to change rounding modes, but not precision.zrounded Round to = with the given rounding mode.{rounded Round to > with the given rounding mode.|rounded<Round to a different precision with the given rounding mode.rounded;Construct a properly rounded floating point number from an ?.rounded:Construct a rounded floating point number directly from a =.rounded:Construct a rounded floating point number directly from a >.rounded Round to @, using the specified rounding mode. Throws AI if the result cannot be represented (for example, infinities or NaN).roundedNatural logarithm of 2rounded 577...rounded 915...roundedUse a value as a constant mpfr_tM (attempts to modify it may explode, changing the precision will explode).rounded Allocates and initializes a new mpfr_tb, if the precision matches after the action then it is peeked and returned. Otherwise you get B.rounded Allocates and initializes a new mpfr_tb, if the precision matches after the action then it is peeked and returned. Otherwise you get B). The result of the action is ignored.roundedLike  but with the limbs allocated by GHC, which should be slightly faster. However, it will crash if MPFR tries to reallocate the limbs, so the action must not try to change the precision or clear it, etc.roundedLike  but with the limbs allocated by GHC, which should be slightly faster. However, it will crash if MPFR tries to reallocate the limbs, so the action must not try to change the precision or clear it, etc.rounded Allocates and initializes a new mpfr_tp to the value. If the precision matches after the action then it is peeked and returned. Otherwise you get B.rounded Allocates and initializes a new mpfr_tp to the value. If the precision matches after the action then it is peeked and returned. Otherwise you get B*. The result ot the action is ignored.roundedPeek an mpfr_t" at its actual precision, reified.dyCDEFGz{|HIJK}~LMNOPQRSTUVWXYZ[\]^_`abcdef 6676677444444](C) 2012-2014 Edward Kmett, Daniel Peebles (C) 2013-2018 Claude Heiland-AllenBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNonejOjklmnopqrstuvwxyz{|}~Oyz{|kljmnopqrstuvwx}~None-.27HSX$rounded9lift a monotone increasing function over a given intervalrounded#create a non-empty interval or failroundedThe whole real number linewhole-Infinity ... InfinityroundedAn empty intervalemptyEmptyroundedCheck if an interval is emptynull (1 ... 5)Falsenull (1 ... 1)False null emptyTruerounded(The infimum (lower bound) of an intervalinf (1.0 ... 20.0)1.0 inf empty*** Exception: empty intervalrounded)The supremum (upper bound) of an intervalsup (1.0 ... 20.0)20.0 sup empty*** Exception: empty intervalroundedIs the interval a singleton point? N.B. This is fairly fragile and likely will not hold after even a few operations that only involve singletonssingular (singleton 1)Truesingular (1.0 ... 20.0)Falserounded#Calculate the width of an interval.width (1 ... 20) 19 ... 19width (singleton 1)0 ... 0 width empty0 ... 0rounded Magnitudemagnitude (1 ... 20)20magnitude (-20 ... 10)20magnitude (singleton 5)5throws  EmptyInterval if the interval is empty.magnitude empty*** Exception: empty intervalrounded "mignitude"mignitude (1 ... 20)1mignitude (-20 ... 10)0mignitude (singleton 5)5throws  EmptyInterval if the interval is empty.mignitude empty*** Exception: empty intervalroundedConstruct a symmetric interval. symmetric 3-3 ... 3rounded%Hausdorff distance between intervals.distance (1 ... 7) (6 ... 10)0distance (1 ... 7) (15 ... 24)8distance (1 ... 7) (-10 ... -2)3distance Empty (1 ... 1)*** Exception: empty intervalrounded1Inflate an interval by enlarging it at both ends.inflate 3 (-1 ... 7) -4 ... 10inflate (-2) (0 ... 4)-2 ... 6inflate 1 emptyEmptyroundedFor all x in X, y in Y. x g y?(5 ... 10 :: Interval Double) <! (20 ... 30 :: Interval Double)True?(5 ... 10 :: Interval Double) <! (10 ... 30 :: Interval Double)False?(20 ... 30 :: Interval Double) <! (5 ... 10 :: Interval Double)FalseroundedFor all x in X, y in Y. x h y@(5 ... 10 :: Interval Double) <=! (20 ... 30 :: Interval Double)True@(5 ... 10 :: Interval Double) <=! (10 ... 30 :: Interval Double)True@(20 ... 30 :: Interval Double) <=! (5 ... 10 :: Interval Double)FalseroundedFor all x in X, y in Y. x i y;Only singleton intervals or empty intervals can return trueE(singleton 5 :: Interval Double) ==! (singleton 5 :: Interval Double)True?(5 ... 10 :: Interval Double) ==! (5 ... 10 :: Interval Double)FalseroundedFor all x in X, y in Y. x j y@(5 ... 15 :: Interval Double) /=! (20 ... 40 :: Interval Double)True@(5 ... 15 :: Interval Double) /=! (15 ... 40 :: Interval Double)FalseroundedFor all x in X, y in Y. x k y@(20 ... 40 :: Interval Double) >! (10 ... 19 :: Interval Double)True?(5 ... 20 :: Interval Double) >! (15 ... 40 :: Interval Double)FalseroundedFor all x in X, y in Y. x l yA(20 ... 40 :: Interval Double) >=! (10 ... 20 :: Interval Double)True@(5 ... 20 :: Interval Double) >=! (15 ... 40 :: Interval Double)Falserounded(Determine if a point is in the interval.elem 3.2 (1 ... 5)Trueelem 5 (1 ... 5)Trueelem 1 (1 ... 5)Trueelem 8 (1 ... 5)False elem 5 emptyFalserounded4Determine if a point is not included in the intervalnotElem 8 (1.0 ... 5.0)TruenotElem 1.4 (1.0 ... 5.0)False9And of course, nothing is a member of the empty interval.notElem 5 emptyTrueroundedFor all x in X, y in Y. x op yroundedDoes there exist an x in X, y in Y such that x g y?roundedDoes there exist an x in X, y in Y such that x h y?roundedDoes there exist an x in X, y in Y such that x i y?roundedDoes there exist an x in X, y in Y such that x j y?roundedDoes there exist an x in X, y in Y such that x k y?roundedDoes there exist an x in X, y in Y such that x l y?roundedDoes there exist an x in X, y in Y such that x op y?roundedCheck if interval X totally contains interval YH(20 ... 40 :: Interval Double) `contains` (25 ... 35 :: Interval Double)TrueH(20 ... 40 :: Interval Double) `contains` (15 ... 35 :: Interval Double)FalseroundedFlipped version of . Check if interval X a subset of interval YJ(25 ... 35 :: Interval Double) `isSubsetOf` (20 ... 40 :: Interval Double)TrueJ(20 ... 40 :: Interval Double) `isSubsetOf` (15 ... 35 :: Interval Double)Falserounded,Calculate the intersection of two intervals.Hintersection (1 ... 10 :: Interval Double) (5 ... 15 :: Interval Double) 5.0 ... 10.0rounded*Calculate the convex hull of two intervals@hull (0 ... 10 :: Interval Double) (5 ... 15 :: Interval Double) 0.0 ... 15.0Ahull (15 ... 85 :: Interval Double) (0 ... 10 :: Interval Double) 0.0 ... 85.0rounded#Bisect an interval at its midpoint.bisect (10.0 ... 20.0)(10.0 ... 15.0,15.0 ... 20.0)bisect (singleton 5.0)(5.0 ... 5.0,5.0 ... 5.0) bisect Empty (Empty,Empty)roundedm will use the midpoint116](C) 2012-2014 Edward Kmett, Daniel Peebles (C) 2013-2018 Claude Heiland-AllenBSD3)Claude Heiland-Allen <claude@mathr.co.uk> experimental non-portableNone.FSXroundedRA properly rounded floating-point number with a given rounding mode and precision.4roundedUse a value as a constant mpfr_tM (attempts to modify it may explode, changing the precision will explode).5rounded Allocates and initializes a new mpfr_t0, after the action it is peeked and returned.6rounded Allocates and initializes a new mpfr_tX, after the action it is peeked and returned. The result of the action is ignored.7rounded Allocates and initializes a new mpfr_t> to the value. After the action it is peeked and returned.8rounded Allocates and initializes a new mpfr_tf to the value. After the action it is peeked and returned. The result of the action is ignored.9roundedPeek an mpfr_t at its actual precision.Opqrstuvw      !"#$%&'()*+,-./0123456789Opqrstuvw-./01      !"#$%&'()*+,23478569n     !"#$%&'()*+,-./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 nopqrstuvwxyz{|}~ "#def89:;<=>?@ABCDEFGHIJ2YZ[KLQ01^c_b`aghilmn                                    &rounded-0.1.0.1-HTe3NFE2wwVIIuDQvd524uNumeric.MPFR.TypesNumeric.MPFR.Raw.UnsafeNumeric.MPFR.Raw.SafeNumeric.RoundedNumeric.Rounded.IntervalNumeric.Rounded.SimpleNumeric.MPFR.RawNumeric.Rounded.PrecisionRoundedNumeric.Rounded.RoundingNumeric.Rounded.InternalMPFRKindMPFRRndMPFRUExpMPFRExpMPFRSign MPFRUPrecMPFRPrecMPFRSize MPFRULongMPFRLongMPFRUIntMPFRIntMPFRmpfrPrecmpfrSignmpfrExpmpfrDMPFR_REGULAR_KINDMPFR_ZERO_KIND MPFR_INF_KIND MPFR_NAN_KIND MPFR_RNDNA MPFR_RNDF MPFR_RNDA MPFR_RNDD MPFR_RNDU MPFR_RNDZ MPFR_RNDNMPFR_EMIN_DEFAULTMPFR_EMAX_DEFAULT MPFR_PREC_MAX MPFR_PREC_MIN MPFR_VERSIONMPFR_VERSION_PATCHLEVELMPFR_VERSION_MINORMPFR_VERSION_MAJOR$fStorableMPFR $fEqMPFRInt $fOrdMPFRInt $fReadMPFRInt $fShowMPFRInt $fEnumMPFRInt$fBoundedMPFRInt $fNumMPFRInt$fIntegralMPFRInt $fRealMPFRInt $fIxMPFRInt $fBitsMPFRInt$fFiniteBitsMPFRInt $fDataMPFRInt$fStorableMPFRInt $fEqMPFRUInt $fOrdMPFRUInt$fReadMPFRUInt$fShowMPFRUInt$fEnumMPFRUInt$fBoundedMPFRUInt $fNumMPFRUInt$fIntegralMPFRUInt$fRealMPFRUInt $fIxMPFRUInt$fBitsMPFRUInt$fFiniteBitsMPFRUInt$fDataMPFRUInt$fStorableMPFRUInt $fEqMPFRLong $fOrdMPFRLong$fReadMPFRLong$fShowMPFRLong$fEnumMPFRLong$fBoundedMPFRLong $fNumMPFRLong$fIntegralMPFRLong$fRealMPFRLong $fIxMPFRLong$fBitsMPFRLong$fFiniteBitsMPFRLong$fDataMPFRLong$fStorableMPFRLong $fEqMPFRULong$fOrdMPFRULong$fReadMPFRULong$fShowMPFRULong$fEnumMPFRULong$fBoundedMPFRULong$fNumMPFRULong$fIntegralMPFRULong$fRealMPFRULong $fIxMPFRULong$fBitsMPFRULong$fFiniteBitsMPFRULong$fDataMPFRULong$fStorableMPFRULong $fEqMPFRSize $fOrdMPFRSize$fReadMPFRSize$fShowMPFRSize$fEnumMPFRSize$fBoundedMPFRSize $fNumMPFRSize$fIntegralMPFRSize$fRealMPFRSize $fIxMPFRSize$fBitsMPFRSize$fFiniteBitsMPFRSize$fDataMPFRSize$fStorableMPFRSize $fEqMPFRPrec $fOrdMPFRPrec$fReadMPFRPrec$fShowMPFRPrec$fEnumMPFRPrec$fBoundedMPFRPrec $fNumMPFRPrec$fIntegralMPFRPrec$fRealMPFRPrec $fIxMPFRPrec$fBitsMPFRPrec$fFiniteBitsMPFRPrec$fDataMPFRPrec$fStorableMPFRPrec $fEqMPFRUPrec$fOrdMPFRUPrec$fReadMPFRUPrec$fShowMPFRUPrec$fEnumMPFRUPrec$fBoundedMPFRUPrec$fNumMPFRUPrec$fIntegralMPFRUPrec$fRealMPFRUPrec $fIxMPFRUPrec$fBitsMPFRUPrec$fFiniteBitsMPFRUPrec$fDataMPFRUPrec$fStorableMPFRUPrec $fEqMPFRSign $fOrdMPFRSign$fReadMPFRSign$fShowMPFRSign$fEnumMPFRSign$fBoundedMPFRSign $fNumMPFRSign$fIntegralMPFRSign$fRealMPFRSign $fIxMPFRSign$fBitsMPFRSign$fFiniteBitsMPFRSign$fDataMPFRSign$fStorableMPFRSign $fEqMPFRExp $fOrdMPFRExp $fReadMPFRExp $fShowMPFRExp $fEnumMPFRExp$fBoundedMPFRExp $fNumMPFRExp$fIntegralMPFRExp $fRealMPFRExp $fIxMPFRExp $fBitsMPFRExp$fFiniteBitsMPFRExp $fDataMPFRExp$fStorableMPFRExp $fEqMPFRUExp $fOrdMPFRUExp$fReadMPFRUExp$fShowMPFRUExp$fEnumMPFRUExp$fBoundedMPFRUExp $fNumMPFRUExp$fIntegralMPFRUExp$fRealMPFRUExp $fIxMPFRUExp$fBitsMPFRUExp$fFiniteBitsMPFRUExp$fDataMPFRUExp$fStorableMPFRUExp $fEqMPFRRnd $fOrdMPFRRnd $fReadMPFRRnd $fShowMPFRRnd $fEnumMPFRRnd$fBoundedMPFRRnd $fNumMPFRRnd$fIntegralMPFRRnd $fRealMPFRRnd $fIxMPFRRnd $fBitsMPFRRnd$fFiniteBitsMPFRRnd $fDataMPFRRnd$fStorableMPFRRnd $fEqMPFRKind $fOrdMPFRKind$fReadMPFRKind$fShowMPFRKind$fEnumMPFRKind$fBoundedMPFRKind $fNumMPFRKind$fIntegralMPFRKind$fRealMPFRKind $fIxMPFRKind$fBitsMPFRKind$fFiniteBitsMPFRKind$fDataMPFRKind$fStorableMPFRKind ComparisonBinaryUnary'UnaryConstantTestwrapped_mpfr_cmp_ldwrapped_mpfr_set_ldwrapped_mpfr_get_ld_2expwrapped_mpfr_get_ldmpfr_nextbelowmpfr_nextabovempfr_greaterequal_pmpfr_lessequal_pmpfr_greater_p mpfr_less_pmpfr_lessgreater_p mpfr_equal_pmpfr_cmp mpfr_modf mpfr_atan2mpfr_maxmpfr_minmpfr_divmpfr_mulmpfr_submpfr_add mpfr_floor mpfr_ceil mpfr_trunc mpfr_rint mpfr_expm1 mpfr_log1p mpfr_atanh mpfr_acosh mpfr_asinh mpfr_tanh mpfr_cosh mpfr_sinh mpfr_atan mpfr_acos mpfr_asinmpfr_tanmpfr_cosmpfr_sin mpfr_sqrtmpfr_expmpfr_logmpfr_negmpfr_absmpfr_setmpfr_const_catalanmpfr_const_eulermpfr_const_log2 mpfr_const_pimpfr_set_z_2expwrapped_mpfr_get_z_2exp mpfr_signbit mpfr_zero_p mpfr_inf_p mpfr_nan_p mpfr_set_d mpfr_set_q mpfr_set_sj mpfr_set_z mpfr_free_str mpfr_get_strwrapped_mpfr_get_z mpfr_get_dmpfr_sgn mpfr_clear mpfr_init2Bytes Precision precisionreifyPrecisionRoundingrounding RoundingMode!TowardNearestWithTiesAwayFromZero TowardNearest TowardZero TowardInf TowardNegInf AwayFromZero Faithfully reifyRoundingtoDouble toLongDouble precRoundabs'negate'.-..+..*.abs_negate_log_exp_sqrt_sin_cos_tan_asin_acos_atan_sinh_cosh_tanh_asinh_acosh_atanh_log1p_expm1_min_max_!+!!-!!*!!/!atan2_!==!!/=!!<=!!>=!!!compare_fromInt fromDoublefromLongDoublesuccUlppredUlp toInteger' truncate_ceiling_floor_round_ decodeFloat'kLog2kEulerkCatalan withInRoundedwithOutRoundedwithOutRounded_unsafeWithOutRoundedunsafeWithOutRounded_withInOutRoundedwithInOutRounded_ peekRoundedIntervalIEmptyfmod increasing decreasing...+/- negInfinity posInfinityintervalwholeemptynullinfsupsingularwidth magnitude mignitude symmetricdistanceinflate!>=!elemnotElem certainly?>=?possiblycontains isSubsetOf intersectionhullbisect divNonZero divPositive divNegativedivZeromidpoint$fFloatingInterval$fRealFracInterval$fFractionalInterval$fShowInterval$fRealInterval $fOrdInterval $fEqInterval $fNumInterval$fGenericInterval reifyRoundedsimplifykPi fromInteger' fromRational'add_sub_mul_div_ toRational' floatRadix' floatDigits' floatRange' encodeFloat' exponent' significand' scaleFloat'isNaN' isInfinite'isDenormalized'isNegativeZero'isIEEE'properFraction_show'read' $fOrdRounded $fEqRoundedghc-primGHC.Primcoerce GHC.TypesDouble&long-double-0.1-AgJlrH5s9NsEHJQldsq2vLNumeric.LongDouble.X87_128 LongDoubleInt integer-gmpGHC.Integer.TypeIntegerbaseGHC.Exception.TypeOverflow GHC.MaybeNothing roundedLimbs roundedExp roundedSign roundedPrectoStringunaryunary'unary''binarybinary'cmp'cmpsgninplaceconstantmodf roundFuncunary_tstin_'in_out_'out_ precBytes bytesPerLimb bitsPerLimb bitsPerLimb1 erangeBitrnd proxyRounding withByteArray asByteArray GHC.Classes<<===/=>>=GHC.Real realToFrac