{-# OPTIONS_HADDOCK -show-extensions #-}
{-# LANGUAGE NoImplicitPrelude, Strict #-}
module Data.Filters.Basic (
intervalNRealFrac
, zero2One
, unsafeTransfer1I5
, transfer1IEq3
) where
import GHC.Base
import GHC.Num ((+), (-), (*), abs)
import GHC.Real
import GHC.Int
intervalNRealFrac
:: (RealFrac b, Integral c) => b
-> b
-> c
-> b
-> c
intervalNRealFrac :: forall b c. (RealFrac b, Integral c) => b -> b -> c -> b -> c
intervalNRealFrac b
minE b
maxE c
n b
x
| forall a. Num a => a -> a
abs (b
maxE forall a. Num a => a -> a -> a
- b
minE) forall a. Ord a => a -> a -> Bool
< b
0.000000001 = forall a b. (RealFrac a, Integral b) => a -> b
ceiling (Double
0.5 forall a. Num a => a -> a -> a
* forall a b. (Integral a, Num b) => a -> b
fromIntegral c
n)
| Bool
otherwise = forall a. Integral a => a -> a
zero2One forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
ceiling forall a b. (a -> b) -> a -> b
$ forall a b. (Integral a, Num b) => a -> b
fromIntegral c
n forall a. Num a => a -> a -> a
* (b
x forall a. Num a => a -> a -> a
- b
minE) forall a. Fractional a => a -> a -> a
/ (b
maxE forall a. Num a => a -> a -> a
- b
minE)
{-# INLINE intervalNRealFrac #-}
zero2One :: Integral a => a -> a
zero2One :: forall a. Integral a => a -> a
zero2One a
x = if a
x forall a. Eq a => a -> a -> Bool
== a
0 then a
1 else a
x
{-# INLINE zero2One #-}
unsafeTransfer1I5
:: RealFrac b => b
-> b
-> b
-> b
-> b
-> b
unsafeTransfer1I5 :: forall b. RealFrac b => b -> b -> b -> b -> b -> b
unsafeTransfer1I5 b
minE0 b
maxE0 b
minE1 b
maxE1 b
x
| forall a. Num a => a -> a
abs (b
maxE0 forall a. Num a => a -> a -> a
- b
minE0) forall a. Ord a => a -> a -> Bool
< b
0.000000001 = b
x
| Bool
otherwise = b
minE1 forall a. Num a => a -> a -> a
+ (b
x forall a. Num a => a -> a -> a
- b
minE0) forall a. Num a => a -> a -> a
* (b
maxE1 forall a. Num a => a -> a -> a
- b
minE1) forall a. Fractional a => a -> a -> a
/ (b
maxE0 forall a. Num a => a -> a -> a
- b
minE0)
{-# INLINE unsafeTransfer1I5 #-}
transfer1IEq3
:: RealFrac b => b
-> b
-> b
-> b
transfer1IEq3 :: forall b. RealFrac b => b -> b -> b -> b
transfer1IEq3 b
minE0 b
minE1 = (forall a. Num a => a -> a -> a
+ (b
minE1 forall a. Num a => a -> a -> a
- b
minE0))
{-# INLINE transfer1IEq3 #-}