module Numeric.Limits where
class NumericLimits x where
minFinite ∷ x
maxFinite ∷ x
class NumericEpsilon x where
epsilon ∷ x
instance NumericLimits Word where
minFinite :: Word
minFinite = Word
forall a. Bounded a => a
minBound Word -> Word -> Word
forall a. Integral a => a -> a -> a
`div` Word
100000
maxFinite :: Word
maxFinite = Word
forall a. Bounded a => a
maxBound Word -> Word -> Word
forall a. Integral a => a -> a -> a
`div` Word
100000
{-# Inline minFinite #-}
{-# Inline maxFinite #-}
instance NumericLimits Int where
minFinite :: Int
minFinite = Int
forall a. Bounded a => a
minBound Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
100000
maxFinite :: Int
maxFinite = Int
forall a. Bounded a => a
maxBound Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
100000
{-# Inline minFinite #-}
{-# Inline maxFinite #-}
instance NumericLimits Double where
minFinite :: Double
minFinite = -Double
1.79e308
maxFinite :: Double
maxFinite = Double
1.79e308
{-# Inline minFinite #-}
{-# Inline maxFinite #-}
instance NumericEpsilon Double where
epsilon :: Double
epsilon = Double
2.2e-16
{-# Inline epsilon #-}