module DSP.Filter.FIR.PolyInterp where
import Data.Array
import Polynomial.Basic
mkcoef :: (Num a, Ix b, Integral b) => (a -> a)
-> b
-> a
-> Array b a
mkcoef :: forall a b.
(Num a, Ix b, Integral b) =>
(a -> a) -> b -> a -> Array b a
mkcoef a -> a
f b
p a
x = forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (b
0,b
pforall a. Num a => a -> a -> a
-b
1) forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map a -> a
f [ a
x forall a. Num a => a -> a -> a
- forall a b. (Integral a, Num b) => a -> b
fromIntegral b
i | b
i <- [b
p1..b
p2] ]
where p1 :: b
p1 = -(b
p forall a. Integral a => a -> a -> a
`div` b
2 forall a. Num a => a -> a -> a
- b
1)
p2 :: b
p2 = b
p forall a. Integral a => a -> a -> a
`div` b
2
bspline_1p0o :: (Ord a, Fractional a) => a -> a
bspline_1p0o :: forall a. (Ord a, Fractional a) => a -> a
bspline_1p0o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1 ] a
x
| Bool
otherwise = a
0
bspline_2p1o :: (Ord a, Fractional a) => a -> a
bspline_2p1o :: forall a. (Ord a, Fractional a) => a -> a
bspline_2p1o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
1 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
bspline_2p1o (-a
x)
bspline_4p3o :: (Ord a, Fractional a) => a -> a
bspline_4p3o :: forall a. (Ord a, Fractional a) => a -> a
bspline_4p3o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
2forall a. Fractional a => a -> a -> a
/a
3, a
0, -a
1, a
1forall a. Fractional a => a -> a -> a
/a
2 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
4forall a. Fractional a => a -> a -> a
/a
3, -a
2, a
1, -a
1forall a. Fractional a => a -> a -> a
/a
6 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
bspline_4p3o (-a
x)
bspline_6p5o :: (Ord a, Fractional a) => a -> a
bspline_6p5o :: forall a. (Ord a, Fractional a) => a -> a
bspline_6p5o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
11forall a. Fractional a => a -> a -> a
/a
20, a
0, -a
1forall a. Fractional a => a -> a -> a
/a
2, a
0, a
1forall a. Fractional a => a -> a -> a
/a
4, -a
1forall a. Fractional a => a -> a -> a
/a
12 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
17forall a. Fractional a => a -> a -> a
/a
40, a
5forall a. Fractional a => a -> a -> a
/a
8, -a
7forall a. Fractional a => a -> a -> a
/a
4, a
5forall a. Fractional a => a -> a -> a
/a
4, -a
3forall a. Fractional a => a -> a -> a
/a
8, a
1forall a. Fractional a => a -> a -> a
/a
24 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
81forall a. Fractional a => a -> a -> a
/a
40, -a
27forall a. Fractional a => a -> a -> a
/a
8, a
9forall a. Fractional a => a -> a -> a
/a
4, -a
3forall a. Fractional a => a -> a -> a
/a
4, a
1forall a. Fractional a => a -> a -> a
/a
8, -a
1forall a. Fractional a => a -> a -> a
/a
120 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
bspline_6p5o (-a
x)
lagrange_4p3o :: (Ord a, Fractional a) => a -> a
lagrange_4p3o :: forall a. (Ord a, Fractional a) => a -> a
lagrange_4p3o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
1forall a. Fractional a => a -> a -> a
/a
2, -a
1, a
1forall a. Fractional a => a -> a -> a
/a
2 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
11forall a. Fractional a => a -> a -> a
/a
6, a
1, -a
1forall a. Fractional a => a -> a -> a
/a
6 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
lagrange_4p3o (-a
x)
lagrange_6p5o :: (Ord a, Fractional a) => a -> a
lagrange_6p5o :: forall a. (Ord a, Fractional a) => a -> a
lagrange_6p5o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
1forall a. Fractional a => a -> a -> a
/a
3, -a
5forall a. Fractional a => a -> a -> a
/a
4, a
5forall a. Fractional a => a -> a -> a
/a
12, a
1forall a. Fractional a => a -> a -> a
/a
4, -a
1forall a. Fractional a => a -> a -> a
/a
12 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
13forall a. Fractional a => a -> a -> a
/a
12, -a
5forall a. Fractional a => a -> a -> a
/a
8, a
25forall a. Fractional a => a -> a -> a
/a
24, -a
3forall a. Fractional a => a -> a -> a
/a
8, a
1forall a. Fractional a => a -> a -> a
/a
24 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
137forall a. Fractional a => a -> a -> a
/a
60, a
15forall a. Fractional a => a -> a -> a
/a
8, -a
17forall a. Fractional a => a -> a -> a
/a
24, a
1forall a. Fractional a => a -> a -> a
/a
8, -a
1forall a. Fractional a => a -> a -> a
/a
120 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
lagrange_6p5o (-a
x)
hermite_4p3o :: (Ord a, Fractional a) => a -> a
hermite_4p3o :: forall a. (Ord a, Fractional a) => a -> a
hermite_4p3o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, a
0, -a
5forall a. Fractional a => a -> a -> a
/a
2, a
3forall a. Fractional a => a -> a -> a
/a
2 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
2, -a
4, a
5forall a. Fractional a => a -> a -> a
/a
2, -a
1forall a. Fractional a => a -> a -> a
/a
2 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
hermite_4p3o (-a
x)
hermite_6p3o :: (Ord a, Fractional a) => a -> a
hermite_6p3o :: forall a. (Ord a, Fractional a) => a -> a
hermite_6p3o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, a
0, -a
7forall a. Fractional a => a -> a -> a
/a
3, a
4forall a. Fractional a => a -> a -> a
/a
3 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
5forall a. Fractional a => a -> a -> a
/a
2, -a
59forall a. Fractional a => a -> a -> a
/a
12, a
3, -a
7forall a. Fractional a => a -> a -> a
/a
12 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ -a
3forall a. Fractional a => a -> a -> a
/a
2, a
7forall a. Fractional a => a -> a -> a
/a
4, -a
2forall a. Fractional a => a -> a -> a
/a
3, a
1forall a. Fractional a => a -> a -> a
/a
12 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
hermite_6p3o (-a
x)
hermite_6p5o :: (Ord a, Fractional a) => a -> a
hermite_6p5o :: forall a. (Ord a, Fractional a) => a -> a
hermite_6p5o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, a
0, -a
25forall a. Fractional a => a -> a -> a
/a
12, a
5forall a. Fractional a => a -> a -> a
/a
12, a
13forall a. Fractional a => a -> a -> a
/a
12, -a
5forall a. Fractional a => a -> a -> a
/a
12 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, a
5forall a. Fractional a => a -> a -> a
/a
12, -a
35forall a. Fractional a => a -> a -> a
/a
8, a
35forall a. Fractional a => a -> a -> a
/a
8, -a
13forall a. Fractional a => a -> a -> a
/a
8, a
5forall a. Fractional a => a -> a -> a
/a
24 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
3, -a
29forall a. Fractional a => a -> a -> a
/a
4, a
155forall a. Fractional a => a -> a -> a
/a
24, -a
65forall a. Fractional a => a -> a -> a
/a
24, a
13forall a. Fractional a => a -> a -> a
/a
24, -a
1forall a. Fractional a => a -> a -> a
/a
24 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
hermite_6p5o (-a
x)
sndosc_4p5o :: (Ord a, Fractional a) => a -> a
sndosc_4p5o :: forall a. (Ord a, Fractional a) => a -> a
sndosc_4p5o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, a
0, -a
1, -a
9forall a. Fractional a => a -> a -> a
/a
2, a
15forall a. Fractional a => a -> a -> a
/a
2, -a
3 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ -a
4, a
18, -a
29, a
43forall a. Fractional a => a -> a -> a
/a
2, -a
15forall a. Fractional a => a -> a -> a
/a
2, a
1 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
sndosc_4p5o (-a
x)
sndosc_6p5o :: (Ord a, Fractional a) => a -> a
sndosc_6p5o :: forall a. (Ord a, Fractional a) => a -> a
sndosc_6p5o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, a
0, -a
5forall a. Fractional a => a -> a -> a
/a
4, -a
35forall a. Fractional a => a -> a -> a
/a
12, a
21forall a. Fractional a => a -> a -> a
/a
4, -a
25forall a. Fractional a => a -> a -> a
/a
12 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ -a
4, a
75forall a. Fractional a => a -> a -> a
/a
4, -a
245forall a. Fractional a => a -> a -> a
/a
8, a
545forall a. Fractional a => a -> a -> a
/a
24, -a
63forall a. Fractional a => a -> a -> a
/a
8, a
25forall a. Fractional a => a -> a -> a
/a
24 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
18, -a
153forall a. Fractional a => a -> a -> a
/a
4, a
255forall a. Fractional a => a -> a -> a
/a
8, -a
313forall a. Fractional a => a -> a -> a
/a
24, a
21forall a. Fractional a => a -> a -> a
/a
8, -a
5forall a. Fractional a => a -> a -> a
/a
24 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
sndosc_6p5o (-a
x)
watte_4p2o :: (Ord a, Fractional a) => a -> a
watte_4p2o :: forall a. (Ord a, Fractional a) => a -> a
watte_4p2o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
1forall a. Fractional a => a -> a -> a
/a
2, -a
1forall a. Fractional a => a -> a -> a
/a
2 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
3forall a. Fractional a => a -> a -> a
/a
2, a
1forall a. Fractional a => a -> a -> a
/a
2 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
watte_4p2o (-a
x)
parabolic2x_4p2o :: (Ord a, Fractional a) => a -> a
parabolic2x_4p2o :: forall a. (Ord a, Fractional a) => a -> a
parabolic2x_4p2o a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
1forall a. Fractional a => a -> a -> a
/a
2, a
0, -a
1forall a. Fractional a => a -> a -> a
/a
4 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1, -a
1, a
1forall a. Fractional a => a -> a -> a
/a
4 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
parabolic2x_4p2o (-a
x)
optimal_2p3o2x :: (Ord a, Fractional a) => a -> a
optimal_2p3o2x :: forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o2x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.80607906469176971, a
0.17594740788514596,
-a
2.35977550974341630, a
1.57015627178718420 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o2x (-a
x)
optimal_2p3o4x :: (Ord a, Fractional a) => a -> a
optimal_2p3o4x :: forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o4x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.88207975731800936, -a
0.10012219395448523,
-a
1.99054787320203810, a
1.32598918957298410 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o4x (-a
x)
optimal_2p3o8x :: (Ord a, Fractional a) => a -> a
optimal_2p3o8x :: forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o8x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.94001491168487883, -a
0.51213628865925998,
-a
1.10319974084152170, a
0.73514591836770027 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o8x (-a
x)
optimal_2p3o16x :: (Ord a, Fractional a) => a -> a
optimal_2p3o16x :: forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o16x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.96964782067188493, -a
0.74617479745643256,
-a
0.57923093055631791, a
0.38606621963374965 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o16x (-a
x)
optimal_2p3o32x :: (Ord a, Fractional a) => a -> a
optimal_2p3o32x :: forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o32x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.98472017575676363, -a
0.87053863725307623,
-a
0.29667081825572522, a
0.19775766248673177 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_2p3o32x (-a
x)
optimal_4p2o2x :: (Ord a, Fractional a) => a -> a
optimal_4p2o2x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o2x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.50061662213752656, -a
0.04782068534965925,
-a
0.21343978756177684 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.92770135528027386, -a
0.88689658749623701,
a
0.21303593243799016 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o2x (-a
x)
optimal_4p2o4x :: (Ord a, Fractional a) => a -> a
optimal_4p2o4x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o4x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.33820365736567115, a
0.2114449807519728,
-a
0.22865399531858188 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.12014639874555470, -a
1.01414466618792900,
a
0.22858390767180370 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o4x (-a
x)
optimal_4p2o8x :: (Ord a, Fractional a) => a -> a
optimal_4p2o8x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o8x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.09224718574204172, a
0.59257579283164508,
-a
0.24005206207889518 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.38828036063664320, -a
1.17126532964206100,
a
0.24004281672637814 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o8x (-a
x)
optimal_4p2o16x :: (Ord a, Fractional a) => a -> a
optimal_4p2o16x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o16x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ -a
0.41849525763976203, a
1.36361593203840510,
-a
0.24506117865474364 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.90873339502208310, -a
1.44144384373471430,
a
0.24506002360805534 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o16x (-a
x)
optimal_4p2o32x :: (Ord a, Fractional a) => a -> a
optimal_4p2o32x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o32x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ -a
1.42170796824052890, a
2.87083485132510450,
-a
0.24755243839713828 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
2.91684291662070860, -a
1.95043794419108290,
a
0.24755229501840223 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p2o32x (-a
x)
optimal_4p3o2x :: (Ord a, Fractional a) => a -> a
optimal_4p3o2x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o2x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.59244492420272321, a
0.03573669883299365,
-a
0.78664888597764893, a
0.36030925263849456 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.20220428331406090, -a
1.60101160971478710,
a
0.70401463131621556, -a
0.10174985775982505 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o2x (-a
x)
optimal_4p3o4x :: (Ord a, Fractional a) => a -> a
optimal_4p3o4x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o4x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.60304009430474115, a
0.05694012453786401,
-a
0.89223007211175309, a
0.42912649274763925 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.31228823423882930, -a
1.85072890189700660,
a
0.87687351895686727, -a
0.13963062613760227 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o4x (-a
x)
optimal_4p3o8x :: (Ord a, Fractional a) => a -> a
optimal_4p3o8x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o8x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.60658368706046584, a
0.07280793921972525,
-a
0.95149675410360302, a
0.46789242171187317 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.35919815911169020, -a
1.95618744839533010,
a
0.94949311590826524, -a
0.15551896027602030 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o8x (-a
x)
optimal_4p3o16x :: (Ord a, Fractional a) => a -> a
optimal_4p3o16x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o16x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.60844825096346644, a
0.07980169577604959,
-a
0.97894238166068270, a
0.48601256046234864 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.37724137476464990, -a
1.99807048591354810,
a
0.97870442828560433, -a
0.16195131297091253 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o16x (-a
x)
optimal_4p3o32x :: (Ord a, Fractional a) => a -> a
optimal_4p3o32x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o32x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.60908264223655417, a
0.08298544053689563,
-a
0.99052586766084594, a
0.49369595780454456 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.38455689452848450, -a
2.01496368680360890,
a
0.99049753216621961, -a
0.16455902278580614 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p3o32x (-a
x)
optimal_4p4o2x :: (Ord a, Fractional a) => a -> a
optimal_4p4o2x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o2x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.58448510036125145, a
0.04442540676862300,
-a
0.7586487041827807, a
0.29412762852131868,
a
0.04252164479749607 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.06598379704160570, -a
1.16581445347275190,
a
0.21256821036268256, a
0.13781898240764315,
-a
0.04289144034653719 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o2x (-a
x)
optimal_4p4o4x :: (Ord a, Fractional a) => a -> a
optimal_4p4o4x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o4x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.61340295990566229, a
0.06128937679587994,
-a
0.94057832565094635, a
0.44922093286355397,
a
0.00986988334359864 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.30835018075821670, -a
1.82814511658458520,
a
0.81943257721092366, -a
0.09642760567543440,
-a
0.00989340017126506 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o4x (-a
x)
optimal_4p4o8x :: (Ord a, Fractional a) => a -> a
optimal_4p4o8x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o8x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.62095991632974834, a
0.06389302461261143,
-a
0.98489647972932193, a
0.48698871865064902,
a
0.00255074537015887 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.35943398999940390, -a
1.97277963497287720,
a
0.95410568622888214, -a
0.14868053358928229,
-a
0.00255226912537286 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o8x (-a
x)
optimal_4p4o16x :: (Ord a, Fractional a) => a -> a
optimal_4p4o16x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o16x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.62293049365660191, a
0.06443376638262904,
-a
0.99620011474430481, a
0.49672182806667398,
a
0.00064264050033187 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.37216269878963180, -a
2.00931632449031920,
a
0.98847675044522398, -a
0.16214364417487748,
-a
0.00064273459469381 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o16x (-a
x)
optimal_4p4o32x :: (Ord a, Fractional a) => a -> a
optimal_4p4o32x :: forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o32x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.62342449465938121, a
0.06456923251842608,
-a
0.99904509583176049, a
0.49917660509564427,
a
0.00016095224137360 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.37534629142898650, -a
2.01847637982642340,
a
0.99711292321092770, -a
0.16553360612350931,
-a
0.00016095810460478 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_4p4o32x (-a
x)
optimal_6p4o2x :: (Ord a, Fractional a) => a -> a
optimal_6p4o2x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o2x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.42640922432669054, -a
0.0052558029434142,
-a
0.20486985491012843, a
0.00255494211547300,
a
0.03134095684084392 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.30902529029941583, a
0.37868437559565432,
-a
0.70564644117967990, a
0.31182026815653541,
-a
0.04385804833432710 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.51897639740576910, -a
1.83761742915820410,
a
0.83217835730406542, -a
0.16695522597587154,
a
0.01249475765486819 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o2x (-a
x)
optimal_6p4o4x :: (Ord a, Fractional a) => a -> a
optimal_6p4o4x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o4x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.20167941634921072, -a
0.06119274485321008,
a
0.56468711069379207, -a
0.42059475673758634,
a
0.02881527997393852 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ -a
0.64579641436229407, a
2.33580825807694700,
-a
1.85350543411307390, a
0.51926458031522660,
-a
0.04250898918476453 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
2.76228852293285200, -a
3.09936092833253300,
a
1.27147464005834010, -a
0.22283280665600644,
a
0.01369173779618459 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o4x (-a
x)
optimal_6p4o8x :: (Ord a, Fractional a) => a -> a
optimal_6p4o8x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o8x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ -a
0.17436452172055789, -a
0.15190225510786248,
a
1.87551558979819120, -a
1.15976496200057480,
a
0.03401038103941584 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ -a
2.26955357035241170, a
5.73320660746477540,
-a
3.92391712129699590, a
0.93463067895166918,
-a
0.05090907029392906 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
4.84834508915762540, -a
5.25661448354449060,
a
2.04584149450148180, -a
0.32814290420019698,
a
0.01689861603514873 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o8x (-a
x)
optimal_6p4o16x :: (Ord a, Fractional a) => a -> a
optimal_6p4o16x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o16x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ -a
0.94730014688427577, -a
0.33649680079382827,
a
4.53807483241466340, -a
2.64598691215356660,
a
0.03755086455339280 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ -a
5.55035312316726960, a
12.52871168241192600,
-a
7.98288364772738750, a
1.70665858343069510,
-a
0.05631219122315393 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
8.94785524286246310, -a
9.37021675593126700,
a
3.44447036756440590, -a
0.49470749109917245,
a
0.01876132424143207 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o16x (-a
x)
optimal_6p4o32x :: (Ord a, Fractional a) => a -> a
optimal_6p4o32x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o32x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ -a
2.44391738331193720, -a
0.69468212315980082,
a
9.67889243081689440, -a
5.50592307590218160,
a
0.03957507923965987 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ -a
11.87524595267807600, a
25.58633277328986500,
-a
15.73068663442630400, a
3.15288929279855570,
-a
0.05936083498715066 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
16.79403235763479100, -a
17.17264148794549100,
a
6.05175140696421730, -a
0.79053754554850286,
a
0.01978575568000696 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p4o32x (-a
x)
optimal_6p5o2x :: (Ord a, Fractional a) => a -> a
optimal_6p5o2x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o2x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.48217702203158502, -a
0.00127577239632662,
-a
0.3267507171395277, -a
0.02014846731685776,
a
0.14640674192652170, -a
0.04317950185225609 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.35095903476754237, a
0.53534756396439365,
-a
1.22477236472789920, a
0.74995484587342742,
-a
0.19234043023690772, a
0.01802814255926417 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
1.62814578813495040, -a
2.26168360510917840,
a
1.22220278720010690, -a
0.31577407091450355,
a
0.03768876199398620, -a
0.00152170021558204 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o2x (-a
x)
optimal_6p5o4x :: (Ord a, Fractional a) => a -> a
optimal_6p5o4x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o4x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.50164509338655083, -a
0.00256790184606694,
-a
0.36229943140977111, -a
0.04512026308730401,
a
0.20620318519804220, -a
0.06607747864416924 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.30718330223223800, a
0.78336433172501685,
-a
1.66940481896969310, a
1.08365113099941970,
-a
0.30560854964737405, a
0.03255079211953620 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
2.05191571792256240, -a
3.19403437421534920,
a
1.99766476840488070, -a
0.62765808573554227,
a
0.09909173357642603, -a
0.00628989632244913 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o4x (-a
x)
optimal_6p5o8x :: (Ord a, Fractional a) => a -> a
optimal_6p5o8x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o8x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.50513183702821474, -a
0.00368143670114908,
-a
0.36434084624989699, -a
0.06070462616102962,
a
0.22942797169644802, -a
0.07517133281176167 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.28281884957695946, a
0.88385964850687193,
-a
1.82581238657617080, a
1.19588167464050650,
-a
0.34363487882262922, a
0.03751837438141215 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
2.15756386503245070, -a
3.42137079071284810,
a
2.18592382088982260, -a
0.70370361187427199,
a
0.11419603882898799, -a
0.00747588873055296 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o8x (-a
x)
optimal_6p5o16x :: (Ord a, Fractional a) => a -> a
optimal_6p5o16x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o16x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.50819303579369868, -a
0.00387117789818541,
-a
0.36990908725555449, -a
0.06616250180411522,
a
0.24139298776307896, -a
0.07990500783668089 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.27758734130911511, a
0.91870010875159547,
-a
1.89281840112089440, a
1.24834464824612510,
-a
0.36203450650610985, a
0.03994519162531633 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
2.19284545406407450, -a
3.50786533926449100,
a
2.26228244623301580, -a
0.73559668875725392,
a
0.12064126711558003, -a
0.00798609327859495 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o16x (-a
x)
optimal_6p5o32x :: (Ord a, Fractional a) => a -> a
optimal_6p5o32x :: forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o32x a
x | a
0 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
1 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.52558916128536759, a
0.00010896283126635,
-a
0.42682321682847008, -a
0.04095676092513167,
a
0.25041444762720882, -a
0.08349799235675044 ] a
x
| a
1 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
2 = forall a. Num a => [a] -> a -> a
polyeval [ a
0.33937904183610190, a
0.80946953063234006,
-a
1.86228986389877100, a
1.27215033630638800,
-a
0.37562266426589430, a
0.04174912841630993 ] a
x
| a
2 forall a. Ord a => a -> a -> Bool
<= a
x Bool -> Bool -> Bool
&& a
x forall a. Ord a => a -> a -> Bool
< a
3 = forall a. Num a => [a] -> a -> a
polyeval [ a
2.13606003964474490, -a
3.48774662195185850,
a
2.28912105276248390, -a
0.75510203509083995,
a
0.12520821766375972, -a
0.00834987866042734 ] a
x
| a
3 forall a. Ord a => a -> a -> Bool
<= a
x = a
0
| Bool
otherwise = forall a. (Ord a, Fractional a) => a -> a
optimal_6p5o32x (-a
x)