cV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrnumber of significant digits base stuvwxyz{|}~/getMantissa and getExp return values such that Z d = getMantissa d * 2^(getExp d - ceiling ((getPrec d) / bitsPerMPLimb)* bitsPerMPLimb )   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuxyz{|}~vw  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Partial booleans neither True nor False. equivalent to False equivalent to True Partial ordering.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'"Ball represents a closed interval [center-radius, center+radius]  center of the ball radius of the ball Precision of ball' s radius. SCreate epsilon neighbourhood of d according to the number of accurate digits of d. * Specifically return m * 2 ^ (e - p - 1) m (dyadic with magnitude e and precision p If first arugment /:= 0 then add to second argument the epsilon of the third. +indicates whether correction is necessary dyadic to be corrected 3dyadic which indicates the magnitude of correction Make a ball from endpoints  desired precision of the center left endpoint right endpoint :Make a ball from endpoints so that no precision is lost. left endpoint right endpoint Normalize the given ball'%s center to the specified precision. ! Resulting ball might be larger. JMakeA a ball from dyadic. Radius is 0 if desired precision is not smaller  than precision of dyadic. Similar to fromDyadic. Similar to fromInt. @Lower endpoint of the ball rounded down to specified precision. >Upper endpoint of the ball rounded up to specified precision. ,Lower endpoint with precision of the center ,Upper endpoint with precision of the center ESign of lower endpoint of the ball. This should be faster than using  signum (center b - radius b)  Analogous to sgnLower. &Upper bound on the width of the ball.  2 * radius b  rounded up. .Check if second ball is included in the first (Check if dyadic is element of the ball. ^Returns an intersection of two balls. If balls are disjoint then computation fails with fail. precision of the resulting ball' s center :Intersection of two balls exactly (no precision is lost). Addition of two balls.   center = center a + center b  radius = radius a + radius b)Rounding errors are added to the radius. Subtraction of two balls.   center = center a - center b  radius = radius a + radius b)Rounding errors are added to the radius. Negation of the ball. 5 center = - center b rounded to specified precision. 1 radius is only modified for the rounding error. JMultiplication of two balls. (centers of both balls are assumed positive) & If none of the balls contains 0 then  3 center = center a * center b + radius a * radius b 3 radius = center a * radius b + radius a * center b* If one of the operands (left) contains 0   center = center a * upper b  radius = radius a * upper b If both of the balls contain 0  = lower = min ((lower a) * (upper b)) ((lower b) * (upper a)) = upper = max ((lower a) * (lower b)) ((upper b) * (upper a)))Rounding errors are added to the radius. Division of two balls  If radius is "large"3 then divide endpoints and makeA a ball from them.  If radius is "small" then division can be optimized  center = center a / center b 6 (radius = radius a * center b + center a * radius b) /. (center b * center b) + 2 * 2 ^ (e1 - e2 - p)  where  p  is precision of the result,  e1 = getExp c1, e2 = getExp c2 &. This way the resulting interval is  guaranteed to be correct. )Rounding errors are added to the radius. <If divisor ball contains zero compuatation fails with fail. FSquare root of a ball. If interval contains 0 then computation fails.   e ^ bLNatural logarithm of a ball. If interval contains 0 then computation fails. Compare two balls.  if upper a < lower b then Less  if upper b < lower a then Greater # otherwise balls are incomparable. Maximum of two balls, meaning: . lower = max (lower a) (lower b) rounded down , upper = max (upper a) (upper b) rounded up Analogous to maxB. Similar to fromDyadic. """$GA wrapper around Ball allowing the results of operations like division H by interval containing zero to be represented and do not cause errors. 'Nothing represents undefined interval. FMake an interval from a ball and normalize it to specified precision. #Just make an interval from a ball. %Make an interval from two endpoints. precision of the interval' s center left endpoint right endpoint BMake an interval from two endpoints so that no precision is lost. AChecks if second interval is inside the first. _|_ is above all. =Checks if interval contains dyadic. _|_ contains everything. \Returns Below if second interval is inside first, Above if converse, NoInclusion otherwise. @Return the intersection of two intervals. The resulting interval'"s center has specified precision. OIf one of the intervals is _|_ then just return the other (even if it is _|_). GReturn the intersection of two intervals so that no precision is lost. $Negate the interval. neg _|_ = _|_. <Addition. If one of the arguments is _|_, so is the result. AMultiplication. If one of the arguments is _|_, so is the result >Subtraction. If one of the arguments is _|_, so is the result SDivision. If one of the arguments is _|_ or divisor contains 0 then result is _|_. OSquare root. If one argument is _|_ or interval contains 0 then result is _|_. UNatural logarithm. If one argument is _|_ or interval contains 0 then result is _|_.  e ^ i & If argument is _|_ so is the result. JCompare two intervals. If one of them is _|_ the result is incomparable, * otherwise result is comparison of balls. ?Maximum of intervals. If one interval is _|_ so is the result. Similar to maxI. 7Center of interval. Center on _|_ will result in fail. 7Radius of interval. Radius on _|_ will result in fail. :Lower endpoint of interval with precision of the center. # Lower on _|_ will result in fail. :Upper endpoint of interval with precision of the center. # Upper on _|_ will result in fail. 9Width of the interval. Widht on _|_ will result in fail. @Real number is represented as a chain of dyadic intervals which 9 are neither necessarily nested nor bounded away from 0. COn n-th stage computations are performed with precision of n bits. VA basic general limit which takes as arguments a sequence of reals and a sequence of  error bounds.  Sequence  Error bounds HSimilar to lim, but can sometimes be more convenient for some sequences initial value Aa function which produces a pair, (next element, error estimate)  from previous one and location "Limit of a sequence of rationals. Sequence of dyadics "Sequence of (dyadic) error bounds .Computes an infinite sum of a series Sequence of reals Sequence of series remainders 7Similar to infSum but can sometimes be more convenient  Second argument is a_0  pCompare x y  returns a function  Nat -> POrdering  which  when applied to some  n & computes approximates with precision  n  + and then compares the resulting intervals  x <. y  is a function  Nat -> PBool  which, when  applied to some  n ,, computes the approximation with precision  n  L and then compares the intervals. If intervals are disjoint then result is < either PTrue or PFalse, otherwise result is Indeterminate.  Similar to (<.)  approx x n 6 tries to compute a dyadic approximation to x so than  |x - d| < = 10^(-n)   If it succeeds it returns  Right d 4 where d is a dyadic rational, otherwise it returns Y Left (d, n) where d is a dyadic rational and n is the number of accurate decimal places \Approx succeeds if result can be computed with precision less than the square of the number  of required bits of precision. ?fromInt should be preferred over fromIntegral where applicable @fromWord should be preferred over fromIntegral where applicable VtoStringDec tries to compute the result to the number of specified significand digits 7toString computes the result with specified precision.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~cBQTcBTQ}BQT}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~HERA-0.2Data.Number.MPFR Data.OrderData.Number.DyadicData.Number.BallData.Number.DyadicIntervalData.Number.RealData.Number.FFIhelper RoundModeDownUpZeroNear PrecisionDyadicaddsubmuldivadd_sub_mul_div_inverseaddwaddimulwmulidivwdiviwdividivsubwsubiwsubisubaddw_addi_mulw_muli_divw_divi_wdiv_idiv_subw_subi_wsub_isub_mul2wmul2idiv2wdiv2imul2w_mul2i_div2w_div2i_int2iint2wint2i_int2w_fmafmsfma_fms_ nextBelowsqrsqrtrootpowpowwpowiwpowwwpowsqr_sqrt_root_pow_poww_powi_wpoww_wpow_expexp2exp10loglog2log10sinhcoshtanhexp_exp2_exp10_log_log2_log10_sinh_cosh_tanh_negabsDdimneg_absD_dim_isNaN isInfiniteisNumberisZerogreater greatereqlesslesseqequalmaxDminDmaxD_minD_sgndyadicToDouble dyadicToWord dyadicToIntdyadicToString decompose toStringExptoStringsetset_pilog2ceulercatalanpi_log2c_euler_catalan_ fromDoublefromIntfromWord fromDouble_fromInt_ fromWord_ fromIntegerAcompose fromStringgetPrec getMantissagetExpminPreconezeroaddPrecPBool IndeterminatePFalsePTrue POrdering IncomparableGreaterLesspow2BallcenterradiusmakeAmake normalizeBall fromDyadiclowerupperlower_upper_sgnLowersgnUpperwidthbelowcontains intersectA intersectabsBcompareBmaxBminBInterval fromBallAfromBallincludescompareImaxIminICRealChainNatmaxminlimlimReclimRatinfSum infSumRecpCompare<.>.approx toStringDecmpfr_custom_movempfr_custom_get_expmpfr_custom_get_mantissampfr_custom_get_kindmpfr_custom_init_setmpfr_custom_initmpfr_custom_get_sizempfr_erangeflag_pmpfr_inexflag_pmpfr_nanflag_pmpfr_overflow_pmpfr_underflow_pmpfr_clear_flagsmpfr_set_erangeflagmpfr_set_inexflagmpfr_set_nanflagmpfr_set_overflowmpfr_set_underflowmpfr_clear_erangeflagmpfr_clear_inexflagmpfr_clear_nanflagmpfr_clear_overflowmpfr_clear_underflowmpfr_subnormalizempfr_check_rangempfr_get_emax_maxmpfr_get_emax_minmpfr_get_emin_maxmpfr_get_emin_min mpfr_set_emax mpfr_set_emin mpfr_get_emax mpfr_get_emin mpfr_copysign mpfr_setsign mpfr_signbit mpfr_set_exp mpfr_get_exp mpfr_random2mpfr_maxmpfr_minmpfr_nextbelowmpfr_nextabovempfr_nexttowardmpfr_integer_p mpfr_remquompfr_remainder mpfr_fracmpfr_rint_truncmpfr_rint_roundmpfr_rint_floormpfr_rint_ceil mpfr_trunc mpfr_round mpfr_floor mpfr_ceil mpfr_rintmpfr_summpfr_free_cachempfr_const_catalanmpfr_const_euler mpfr_const_pimpfr_const_log2 mpfr_hypotmpfr_agmmpfr_fmsmpfr_fmampfr_ynmpfr_y1mpfr_y0mpfr_jnmpfr_j1mpfr_j0 mpfr_erfcmpfr_erf mpfr_zeta_ui mpfr_zeta mpfr_lgamma mpfr_lngamma mpfr_gamma mpfr_eint mpfr_expm1 mpfr_log1p mpfr_fac_ui mpfr_atanh mpfr_acosh mpfr_asinh mpfr_coth mpfr_csch mpfr_sech mpfr_tanh mpfr_sinh mpfr_cosh mpfr_atan2 mpfr_atan mpfr_acos mpfr_asin mpfr_sin_cosmpfr_cotmpfr_cscmpfr_secmpfr_tanmpfr_cosmpfr_sin mpfr_exp10 mpfr_exp2mpfr_exp mpfr_log10 mpfr_log2mpfr_logmpfr_unordered_p mpfr_equal_pmpfr_lessgreater_pmpfr_lessequal_p mpfr_less_pmpfr_greaterequal_pmpfr_greater_pmpfr_sgn mpfr_zero_p mpfr_number_p mpfr_inf_p mpfr_nan_p mpfr_cmpabsmpfr_cmp_si_2expmpfr_cmp_ui_2exp mpfr_cmp_d mpfr_cmp_si mpfr_cmp_uimpfr_cmp mpfr_div_2si mpfr_div_2ui mpfr_mul_2si mpfr_mul_2uimpfr_dimmpfr_absmpfr_neg mpfr_ui_powmpfr_ui_pow_ui mpfr_pow_si mpfr_pow_uimpfr_pow mpfr_root mpfr_cbrt mpfr_sqrt_ui mpfr_sqrt mpfr_div_si mpfr_si_div mpfr_div_ui mpfr_ui_divmpfr_divmpfr_sqr mpfr_mul_si mpfr_mul_uimpfr_mul mpfr_sub_si mpfr_si_sub mpfr_sub_ui mpfr_ui_submpfr_sub mpfr_add_si mpfr_add_uimpfr_addmpfr_fits_uintmax_pmpfr_fits_intmax_pmpfr_fits_sshort_pmpfr_fits_ushort_pmpfr_fits_sint_pmpfr_fits_uint_pmpfr_fits_slong_pmpfr_fits_ulong_p mpfr_free_str mpfr_get_str mpfr_get_ui mpfr_get_simpfr_get_d_2exp mpfr_get_d mpfr_swap mpfr_set_nan mpfr_set_inf mpfr_strtofr mpfr_set_strmpfr_set_si_2expmpfr_set_ui_2exp mpfr_set_d mpfr_set_si mpfr_set_uimpfr_set mpfr_get_precclearinitSMpSizeExp CPrecisionSignLimb CRoundModeMPFR_TMP GMP_RNDNA GMP_RND_MAXpeekP bitsPerMPLimb withDyadicsBAwithDyadicBAuiwithDyadicBAsiwithDyadicBAiuwithDyadicBAis withDyadicB withDyadicP withDyadic withDyadicBB withDyadicC checkPrecstringToDyadic getMantissa'binprecradPrec createEpsilon addEpsilon decimalPrec correctDigits Inclusion NoInclusionBelowAbovewrapstateeval represent represent2