packages feed

data-extra 2.2.0 → 2.3.0

raw patch · 3 files changed

+61/−3 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Number.Extra: awayFromZero :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: fi :: (Integral a, Num b) => a -> b
+ Data.Number.Extra: isHalf :: RealFrac a => a -> Bool
+ Data.Number.Extra: nearestAwayFromZero :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: nearestBanker :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: nearestTowardInf :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: nearestTowardNegInf :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: nearestTowardZero :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: towardInf :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: towardNegInf :: (Integral b, RealFrac a) => a -> b
+ Data.Number.Extra: towardZero :: (Integral b, RealFrac a) => a -> b

Files

data-extra.cabal view
@@ -1,10 +1,10 @@ name:                data-extra-version:             2.2.0+version:             2.3.0 synopsis:            Extra utilities for working on Data.* types. description:         Extra utilities for working on Data.* types. license:             BSD3 license-file:        LICENSE-author:              Chris Done+author:              Chris Done, Sam Levy maintainer:          chrisdone@gmail.com copyright:           2013 Chris Done category:            Data
src/Data/Number/Extra.hs view
@@ -2,6 +2,62 @@  module Data.Number.Extra where --- | Shorter-hand for fromIntegral.+{-# INLINE towardZero          #-}+{-# INLINE towardInf           #-}+{-# INLINE towardNegInf        #-}+{-# INLINE awayFromZero        #-}+{-# INLINE nearestTowardZero   #-}+{-# INLINE nearestTowardInf    #-}+{-# INLINE nearestTowardNegInf #-}+{-# INLINE nearestAwayFromZero #-}+{-# INLINE nearestBanker       #-}++-- | Round toward zero (truncate).+towardZero :: (Integral b, RealFrac a) => a -> b+towardZero = truncate++-- | Round upwards (ceiling).+towardInf :: (Integral b, RealFrac a) => a -> b+towardInf = ceiling++-- | Round backwards (floor).+towardNegInf :: (Integral b, RealFrac a) => a -> b+towardNegInf = floor++-- | Round away from zero (ceiling if positive, floor otherwise).+awayFromZero :: (Integral b, RealFrac a) => a -> b+awayFromZero v = if v > 0 then ceiling v else floor v++-- | Round torwards zero (if half go towards zero, otherwise up to 1).+nearestTowardZero :: (Integral b, RealFrac a) => a -> b+nearestTowardZero v = if isHalf v then towardZero   v else round v++-- | Same as "nearestTowardZero" but to infinity instead of zero.+nearestTowardInf :: (Integral b, RealFrac a) => a -> b+nearestTowardInf v = if isHalf v then towardInf    v else round v++-- | Same as "nearestTowardZero" but towards negative instead of zero.+nearestTowardNegInf :: (Integral b, RealFrac a) => a -> b+nearestTowardNegInf v = if isHalf v then towardNegInf v else round v++-- | Same as "nearestTowardZero" but rounds away from zero (by positive or negative).+nearestAwayFromZero :: (Integral b, RealFrac a) => a -> b+nearestAwayFromZero v = if isHalf v then awayFromZero v else round v++-- | Round up (round).+nearestBanker :: (Integral b, RealFrac a) => a -> b+nearestBanker = round++{-# INLINE fi #-}+-- | Short-hand for fromIntegral.+fi :: (Integral a, Num b) => a -> b+fi = fromIntegral++{-# INLINE isHalf #-}+-- | Is a number rounded down 0.5?+isHalf :: RealFrac a => a -> Bool+isHalf v = v - fromInteger (towardNegInf v) == 0.5++-- | Short-hand for fromIntegral. Deprecated in favour of the more popular fi. int :: (Integral a, Num b) => a -> b int = fromIntegral
src/Data/Tuple/Extra.hs view
@@ -1,3 +1,5 @@+-- | Tuple utilities.+ module Data.Tuple.Extra where  -- | Swap tuple's elements.