{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE Strict #-}
{-# OPTIONS_HADDOCK -show-extensions #-}
module Phladiprelio.Filters (
intervalNRealFrac
, unsafeTransfer1I5
, transfer1IEq3
, unsafeRearrangeIG
, unsafeRearrangeIGArr
, unsafeRearrangeIGV
, unsafeSwapIWithMaxI
) where
import GHC.Base
import GHC.Num ((+),(-),(*),abs)
import GHC.Real
import GHC.Int
import Data.Filters.Basic
import GHC.Arr
import CaseBi.Arr
import GHC.List
import Data.List (sort)
unsafeRearrangeIG
:: (RealFrac b, Integral c) => b
-> b
-> c
-> [(c,c)]
-> b
-> b
unsafeRearrangeIG :: forall b c.
(RealFrac b, Integral c) =>
b -> b -> c -> [(c, c)] -> b -> b
unsafeRearrangeIG b
minE b
maxE c
n [(c, c)]
xs b
x
| forall a. Num a => a -> a
abs (b
minE forall a. Num a => a -> a -> a
- b
maxE) forall a. Ord a => a -> a -> Bool
< b
0.00000001 = b
x
| Bool
otherwise = b
x forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall a b. Ord a => b -> [(a, b)] -> a -> b
getBFstL' c
n0 [(c, c)]
xs c
n0 forall a. Num a => a -> a -> a
- c
n0) forall a. Num a => a -> a -> a
* (b
maxE forall a. Num a => a -> a -> a
- b
minE) forall a. Fractional a => a -> a -> a
/ forall a b. (Integral a, Num b) => a -> b
fromIntegral c
n
where n0 :: c
n0 = forall b c. (RealFrac b, Integral c) => b -> b -> c -> b -> c
intervalNRealFrac b
minE b
maxE c
n b
x
unsafeRearrangeIGArr
:: (RealFrac b, Integral c) => b
-> b
-> c
-> Array Int (c,c)
-> b
-> b
unsafeRearrangeIGArr :: forall b c.
(RealFrac b, Integral c) =>
b -> b -> c -> Array Int (c, c) -> b -> b
unsafeRearrangeIGArr b
minE b
maxE c
n Array Int (c, c)
arr b
x
| forall a. Num a => a -> a
abs (b
minE forall a. Num a => a -> a -> a
- b
maxE) forall a. Ord a => a -> a -> Bool
< b
0.00000001 = b
x
| Bool
otherwise = b
x forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (c
n0, Array Int (c, c)
arr) c
n0 forall a. Num a => a -> a -> a
- c
n0) forall a. Num a => a -> a -> a
* (b
maxE forall a. Num a => a -> a -> a
- b
minE) forall a. Fractional a => a -> a -> a
/ forall a b. (Integral a, Num b) => a -> b
fromIntegral c
n
where n0 :: c
n0 = forall b c. (RealFrac b, Integral c) => b -> b -> c -> b -> c
intervalNRealFrac b
minE b
maxE c
n b
x
unsafeRearrangeIGV
:: (RealFrac b, Integral c, Ord c) => b
-> b
-> c
-> [c]
-> b
-> b
unsafeRearrangeIGV :: forall b c.
(RealFrac b, Integral c, Ord c) =>
b -> b -> c -> [c] -> b -> b
unsafeRearrangeIGV b
minE b
maxE c
n [c]
xs = forall b c.
(RealFrac b, Integral c) =>
b -> b -> c -> Array Int (c, c) -> b -> b
unsafeRearrangeIGArr b
minE b
maxE c
n Array Int (c, c)
arr
where ts :: [c]
ts = forall {a}. Eq a => [a] -> [a]
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Ord a => [a] -> [a]
sort forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (a -> Bool) -> [a] -> [a]
filter (forall a. Ord a => a -> a -> Bool
<c
n) forall a b. (a -> b) -> a -> b
$ [c]
xs
f :: [a] -> [a]
f (a
t:a
u:[a]
ts)
| a
t forall a. Eq a => a -> a -> Bool
== a
u = [a] -> [a]
f (a
tforall a. a -> [a] -> [a]
:[a]
ts)
| Bool
otherwise = a
tforall a. a -> [a] -> [a]
:[a] -> [a]
f(a
uforall a. a -> [a] -> [a]
:[a]
ts)
f [a]
ts = [a]
ts
ks :: [(c, c)]
ks = forall a b. [a] -> [b] -> [(a, b)]
zip [c]
ts (forall a. [a] -> [a]
cycle [c
n]) forall a. Monoid a => a -> a -> a
`mappend` [(c
n,forall a. [a] -> a
head [c]
xs)]
l :: Int
l = forall a. [a] -> Int
length [c]
ts
arr :: Array Int (c, c)
arr = forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
l) [(c, c)]
ks
{-# INLINE unsafeRearrangeIGV #-}
unsafeSwapIWithMaxI
:: (RealFrac b, Integral c) => b
-> b
-> c
-> c
-> b
-> b
unsafeSwapIWithMaxI :: forall b c. (RealFrac b, Integral c) => b -> b -> c -> c -> b -> b
unsafeSwapIWithMaxI b
minE b
maxE c
n c
k = forall b c.
(RealFrac b, Integral c) =>
b -> b -> c -> [(c, c)] -> b -> b
unsafeRearrangeIG b
minE b
maxE c
n [(c
k,c
n),(c
n,c
k)]
{-# INLINE unsafeSwapIWithMaxI #-}