module Data.Filters.Basic (
intervalNRealFrac
, zero2One
, unsafeTransfer1I5
, transfer1IEq3
) where
intervalNRealFrac
:: RealFrac b => b
-> b
-> Int
-> b
-> Int
intervalNRealFrac :: b -> b -> Int -> b -> Int
intervalNRealFrac b
minE b
maxE Int
n b
x
| b
maxE b -> b -> Bool
forall a. Eq a => a -> a -> Bool
== b
minE = Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
ceiling (Double
0.5 Double -> Double -> Double
forall a. Num a => a -> a -> a
* Int -> Double
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n)
| Bool
otherwise = Int -> Int
zero2One (Int -> Int) -> (b -> Int) -> b -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> Int
forall a b. (RealFrac a, Integral b) => a -> b
ceiling (b -> Int) -> b -> Int
forall a b. (a -> b) -> a -> b
$ Int -> b
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n b -> b -> b
forall a. Num a => a -> a -> a
* (b
x b -> b -> b
forall a. Num a => a -> a -> a
- b
minE) b -> b -> b
forall a. Fractional a => a -> a -> a
/ (b
maxE b -> b -> b
forall a. Num a => a -> a -> a
- b
minE)
{-# INLINE intervalNRealFrac #-}
zero2One :: Int -> Int
zero2One :: Int -> Int
zero2One Int
x = if Int
x Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
0 then Int
1 else Int
x
{-# INLINE zero2One #-}
unsafeTransfer1I5
:: RealFrac b => b
-> b
-> b
-> b
-> b
-> b
unsafeTransfer1I5 :: b -> b -> b -> b -> b -> b
unsafeTransfer1I5 b
minE0 b
maxE0 b
minE1 b
maxE1 b
x
| b
minE0 b -> b -> Bool
forall a. Eq a => a -> a -> Bool
== b
maxE0 = b
x
| Bool
otherwise = b
minE1 b -> b -> b
forall a. Num a => a -> a -> a
+ (b
x b -> b -> b
forall a. Num a => a -> a -> a
- b
minE0) b -> b -> b
forall a. Num a => a -> a -> a
* (b
maxE1 b -> b -> b
forall a. Num a => a -> a -> a
- b
minE1) b -> b -> b
forall a. Fractional a => a -> a -> a
/ (b
maxE0 b -> b -> b
forall a. Num a => a -> a -> a
- b
minE0)
{-# INLINE unsafeTransfer1I5 #-}
transfer1IEq3
:: RealFrac b => b
-> b
-> b
-> b
transfer1IEq3 :: b -> b -> b -> b
transfer1IEq3 b
minE0 b
minE1 = (b -> b -> b
forall a. Num a => a -> a -> a
+ (b
minE1 b -> b -> b
forall a. Num a => a -> a -> a
- b
minE0))
{-# INLINE transfer1IEq3 #-}