-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ @package HERA @version 0.2 module Data.Number.MPFR type Dyadic = MPFR_T type Precision = Word data RoundMode Near :: RoundMode Zero :: RoundMode Up :: RoundMode Down :: RoundMode add :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic sub :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic mul :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic div :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic inverse :: Dyadic -> Dyadic add_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) sub_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) mul_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) div_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) addw :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic addi :: RoundMode -> Precision -> Dyadic -> Int -> Dyadic mulw :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic muli :: RoundMode -> Precision -> Dyadic -> Int -> Dyadic divw :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic divi :: RoundMode -> Precision -> Dyadic -> Int -> Dyadic wdiv :: RoundMode -> Precision -> Word -> Dyadic -> Dyadic idiv :: RoundMode -> Precision -> Int -> Dyadic -> Dyadic subw :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic subi :: RoundMode -> Precision -> Dyadic -> Int -> Dyadic wsub :: RoundMode -> Precision -> Word -> Dyadic -> Dyadic isub :: RoundMode -> Precision -> Int -> Dyadic -> Dyadic addw_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) addi_ :: RoundMode -> Precision -> Dyadic -> Int -> (Dyadic, Int) mulw_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) muli_ :: RoundMode -> Precision -> Dyadic -> Int -> (Dyadic, Int) divw_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) divi_ :: RoundMode -> Precision -> Dyadic -> Int -> (Dyadic, Int) wdiv_ :: RoundMode -> Precision -> Word -> Dyadic -> (Dyadic, Int) idiv_ :: RoundMode -> Precision -> Int -> Dyadic -> (Dyadic, Int) subw_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) subi_ :: RoundMode -> Precision -> Dyadic -> Int -> (Dyadic, Int) wsub_ :: RoundMode -> Precision -> Word -> Dyadic -> (Dyadic, Int) isub_ :: RoundMode -> Precision -> Int -> Dyadic -> (Dyadic, Int) mul2w :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic mul2i :: RoundMode -> Precision -> Dyadic -> Int -> Dyadic div2w :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic div2i :: RoundMode -> Precision -> Dyadic -> Int -> Dyadic mul2w_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) mul2i_ :: RoundMode -> Precision -> Dyadic -> Int -> (Dyadic, Int) div2w_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) div2i_ :: RoundMode -> Precision -> Dyadic -> Int -> (Dyadic, Int) int2i :: RoundMode -> Precision -> Int -> Int -> Dyadic int2w :: RoundMode -> Precision -> Word -> Int -> Dyadic int2i_ :: RoundMode -> Precision -> Int -> Int -> (Dyadic, Int) int2w_ :: RoundMode -> Precision -> Word -> Int -> (Dyadic, Int) fma :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic -> Dyadic fms :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic -> Dyadic fma_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic -> (Dyadic, Int) fms_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic -> (Dyadic, Int) nextBelow :: Dyadic -> Dyadic sqr :: RoundMode -> Precision -> Dyadic -> Dyadic sqrt :: RoundMode -> Precision -> Dyadic -> Dyadic root :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic pow :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic poww :: RoundMode -> Precision -> Dyadic -> Word -> Dyadic powi :: RoundMode -> Precision -> Dyadic -> Int -> Dyadic wpoww :: RoundMode -> Precision -> Word -> Word -> Dyadic wpow :: RoundMode -> Precision -> Word -> Dyadic -> Dyadic sqr_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) sqrt_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) root_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) pow_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) poww_ :: RoundMode -> Precision -> Dyadic -> Word -> (Dyadic, Int) powi_ :: RoundMode -> Precision -> Dyadic -> Int -> (Dyadic, Int) wpoww_ :: RoundMode -> Precision -> Word -> Word -> (Dyadic, Int) wpow_ :: RoundMode -> Precision -> Word -> Dyadic -> (Dyadic, Int) exp :: RoundMode -> Precision -> Dyadic -> Dyadic exp2 :: RoundMode -> Precision -> Dyadic -> Dyadic exp10 :: RoundMode -> Precision -> Dyadic -> Dyadic log :: RoundMode -> Precision -> Dyadic -> Dyadic log2 :: RoundMode -> Precision -> Dyadic -> Dyadic log10 :: RoundMode -> Precision -> Dyadic -> Dyadic sinh :: RoundMode -> Precision -> Dyadic -> Dyadic cosh :: RoundMode -> Precision -> Dyadic -> Dyadic tanh :: RoundMode -> Precision -> Dyadic -> Dyadic exp_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) exp2_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) exp10_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) log_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) log2_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) log10_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) sinh_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) cosh_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) tanh_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) neg :: RoundMode -> Precision -> Dyadic -> Dyadic absD :: RoundMode -> Precision -> Dyadic -> Dyadic dim :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic neg_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) absD_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) dim_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) isNaN :: Dyadic -> Bool isInfinite :: Dyadic -> Bool isNumber :: Dyadic -> Bool isZero :: Dyadic -> Bool greater :: Dyadic -> Dyadic -> Bool greatereq :: Dyadic -> Dyadic -> Bool less :: Dyadic -> Dyadic -> Bool lesseq :: Dyadic -> Dyadic -> Bool equal :: Dyadic -> Dyadic -> Bool maxD :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic minD :: RoundMode -> Precision -> Dyadic -> Dyadic -> Dyadic maxD_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) minD_ :: RoundMode -> Precision -> Dyadic -> Dyadic -> (Dyadic, Int) sgn :: Dyadic -> Int dyadicToDouble :: RoundMode -> Dyadic -> Double dyadicToWord :: RoundMode -> Dyadic -> Word dyadicToInt :: RoundMode -> Dyadic -> Int dyadicToString :: RoundMode -> Word -> Word -> Dyadic -> (String, Int) decompose :: Dyadic -> (Integer, Int) toStringExp :: Word -> Dyadic -> String toString :: Word -> Dyadic -> String pi :: RoundMode -> Precision -> Dyadic log2c :: RoundMode -> Precision -> Dyadic euler :: RoundMode -> Precision -> Dyadic catalan :: RoundMode -> Precision -> Dyadic pi_ :: RoundMode -> Precision -> (Dyadic, Int) log2c_ :: RoundMode -> Precision -> (Dyadic, Int) euler_ :: RoundMode -> Precision -> (Dyadic, Int) catalan_ :: RoundMode -> Precision -> (Dyadic, Int) set :: RoundMode -> Precision -> Dyadic -> Dyadic set_ :: RoundMode -> Precision -> Dyadic -> (Dyadic, Int) fromDouble :: RoundMode -> Precision -> Double -> Dyadic fromInt :: RoundMode -> Precision -> Int -> Dyadic fromWord :: RoundMode -> Precision -> Word -> Dyadic fromDouble_ :: RoundMode -> Precision -> Double -> (Dyadic, Int) fromInt_ :: RoundMode -> Precision -> Int -> (Dyadic, Int) fromWord_ :: RoundMode -> Precision -> Word -> (Dyadic, Int) fromIntegerA :: RoundMode -> Precision -> Integer -> Dyadic compose :: RoundMode -> Precision -> (Integer, Int) -> Dyadic fromString :: String -> Precision -> Word -> Dyadic getPrec :: Dyadic -> Precision -- | getMantissa and getExp return values such that -- --
-- d = getMantissa d * 2^(getExp d - ceiling ((getPrec d) / bitsPerMPLimb)* bitsPerMPLimb ) --getMantissa :: Dyadic -> Integer getExp :: Dyadic -> Int minPrec :: Precision one :: Dyadic zero :: Dyadic addPrec :: Dyadic -> Dyadic -> Precision instance Num Dyadic instance Show Dyadic instance Ord Dyadic instance Eq Dyadic module Data.Order -- | Partial ordering. data POrdering Less :: POrdering Greater :: POrdering Incomparable :: POrdering -- | Partial booleans data PBool -- | equivalent to True PTrue :: PBool -- | equivalent to False PFalse :: PBool -- | neither True nor False. Indeterminate :: PBool instance Eq PBool instance Show PBool instance Ord PBool instance Eq POrdering instance Show POrdering instance Ord POrdering module Data.Number.Dyadic pow2 :: Int -> Dyadic module Data.Number.Ball -- | Ball represents a closed interval [center-radius, center+radius] -- data Ball Ball :: !Dyadic -> !Dyadic -> Ball -- | center of the ball center :: Ball -> !Dyadic -- | radius of the ball radius :: Ball -> !Dyadic -- | Make a ball from endpoints makeA :: Precision -> Dyadic -> Dyadic -> Ball -- | Make a ball from endpoints so that no precision is lost. make :: Dyadic -> Dyadic -> Ball -- | Normalize the given ball's center to the specified precision. -- Resulting ball might be larger. normalizeBall :: Precision -> Ball -> Ball -- | Lower endpoint of the ball rounded down to specified precision. lower :: Precision -> Ball -> Dyadic -- | Upper endpoint of the ball rounded up to specified precision. upper :: Precision -> Ball -> Dyadic -- | Lower endpoint with precision of the center lower_ :: Ball -> Dyadic -- | Upper endpoint with precision of the center upper_ :: Ball -> Dyadic -- | Sign of lower endpoint of the ball. This should be faster than using -- signum (center b - radius b) sgnLower :: Ball -> Int -- | Analogous to sgnLower. sgnUpper :: Ball -> Int -- | Upper bound on the width of the ball. 2 * radius b rounded -- up. width :: Ball -> Dyadic -- | Compare two balls. -- --
center = center a + center b
radius = radius a + radius b
center = center a - center b
radius = radius a + radius b
-- center = center a * center b + radius a * radius b ---- --
-- radius = center a * radius b + radius a * center b ---- --
-- center = center a * upper b ---- --
-- radius = radius a * upper b ---- --
-- 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. mul :: Precision -> Ball -> Ball -> Ball -- | Division of two balls -- --
center = center a / center b
-- e ^ b --exp :: Precision -> Ball -> Ball -- | Natural logarithm of a ball. If interval contains 0 then computation -- fails. log :: (Monad m) => Precision -> Ball -> m Ball -- | Maximum of two balls, meaning: -- --