úÎ3Š16#      !"Safe*ç¦A MathContext is interpreted by divisions and rounding operations to specify the expected loss of precision and the rounding behaviour. MathContext is a pair of a  and a target precision of type # $L. The precision defines the number of digits after the decimal point. If %` is given as precision all decimal digits are to be preserved, that is precision is not limited.­BigDecimal is represented by an unscaled Integer value plus a second Integer value that defines the scale E.g.: (BigDecimal 1234 2) represents the decimal value 12.34.,creates a BigDecimal value from an unscaled $( value and a scale, given as a positive $9. Example: (BigDecimal 1234 2) creates the value 12.34WRoundingMode defines how to handle loss of precision in divisions or explicit rounding.&Rounding mode to round away from zero.$Rounding mode to round towards zero.1Rounding mode to round towards positive infinity.1Rounding mode to round towards negative infinity.pRounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up. rRounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. ˆRounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. gRounding mode to assert that the requested operation has an exact result, hence no rounding is applied. #gets the scale part of a BigDecimal &get the unscaled value of a BigDecimalcreates a BigDecimal from a & value. % defines precision and rounding mode.'add two BigDecimals(multiply two BigDecimals'divide two BigDecimals and applies the  (i.e. a tuple of + and the specified precision) for rounding.)?divide two correctly scaled Integers and apply the RoundingModeround a BigDecimal to n digits applying the  mc*match the scales of a tuple of BigDecimals*returns the number of digits of an IntegerJremoves trailing zeros from a BigDecimals intValue by decreasing the scale(computes the normal form of a BigDecimalBread a BigDecimal from a human readable decimal notation. e.g.  fromString "3.14"  yields 'BigDecimal 314 2'Areturns a readable String representation of a BigDecimal e.g.  toString (BigDecimal 314 2)  yields "3.14" construct a  for rounding  with scale decimal digits;the tuple of dividend and divisor. I.e. (dividend, divisor) (i.e. a tuple of D and the specified precision) defines the rounding behaviour. if %> if given as precision the maximum possible precision is used.the resulting BigDecimal   Safe1‹computes the square root of any non-negative BigDecimal, rounding and precision defined by MathContext. We are using Newton's algorithm.!RCompute pi using rounding mode and scale of the specified MathContext Sources:  4https://wiki.haskell.org/Integers_too_big_for_floats & (https://github.com/eobermuhlner/big-math !! *      !"#$%&'()*%&+%,-./01*HasBigDecimal-0.1.1-68Qkq3RmZf11SFNAdcTSscData.BigDecimalData.BigFloating MathContext BigDecimal RoundingModeUPDOWNCEILINGFLOORHALF_UP HALF_DOWN HALF_EVENPRECISEgetScalegetValue fromRatiodivideroundBD matchScales precisiontrimnf fromStringtoStringhalfUp$fOrdBigDecimal$fRealBigDecimal$fFractionalBigDecimal$fEqBigDecimal$fNumBigDecimal$fShowBigDecimal$fReadBigDecimalsqrnthRoot piChudnovsky$fFloatingBigDecimalbaseGHC.BaseMaybe integer-gmpGHC.Integer.TypeIntegerNothingGHC.RealRationalplusmuldivUsing