module Zwirn.Core.Number where
import Data.Fixed (mod')
import Zwirn.Core.Core
import Zwirn.Core.Modulate (fastcat)
import Zwirn.Core.Time (Time)
import Zwirn.Core.Types
instance (Num a, Applicative k) => Num (ZwirnT k st i a) where
+ :: ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
(+) = (a -> a -> a)
-> ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a -> a -> a
forall a. Num a => a -> a -> a
(+)
(-) = (a -> a -> a)
-> ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (-)
* :: ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
(*) = (a -> a -> a)
-> ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a -> a -> a
forall a. Num a => a -> a -> a
(*)
negate :: ZwirnT k st i a -> ZwirnT k st i a
negate = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Num a => a -> a
negate
abs :: ZwirnT k st i a -> ZwirnT k st i a
abs = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Num a => a -> a
abs
signum :: ZwirnT k st i a -> ZwirnT k st i a
signum = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Num a => a -> a
signum
fromInteger :: Integer -> ZwirnT k st i a
fromInteger = a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a)
-> (Integer -> a) -> Integer -> ZwirnT k st i a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Integer -> a
forall a. Num a => Integer -> a
fromInteger
instance (Eq a, Fractional a, MultiMonad k, HasSilence k) => Fractional (ZwirnT k st i a) where
fromRational :: Rational -> ZwirnT k st i a
fromRational = a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a)
-> (Rational -> a) -> Rational -> ZwirnT k st i a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rational -> a
forall a. Fractional a => Rational -> a
fromRational
recip :: ZwirnT k st i a -> ZwirnT k st i a
recip ZwirnT k st i a
xz = ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a. ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall (m :: * -> *) a. MultiMonad m => m (m a) -> m a
innerJoin (ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a)
-> ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ (a -> ZwirnT k st i a)
-> ZwirnT k st i a -> ZwirnT k st i (ZwirnT k st i a)
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\a
x -> if a
x a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a
0 then ZwirnT k st i a
forall st i a. ZwirnT k st i a
forall (k :: * -> *) st i a. HasSilence k => ZwirnT k st i a
silence else a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a) -> a -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ a -> a
forall a. Fractional a => a -> a
recip a
x) ZwirnT k st i a
xz
instance (Ord a, Floating a, MultiMonad k, HasSilence k) => Floating (ZwirnT k st i a) where
pi :: ZwirnT k st i a
pi = a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
forall a. Floating a => a
pi
exp :: ZwirnT k st i a -> ZwirnT k st i a
exp = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
exp
log :: ZwirnT k st i a -> ZwirnT k st i a
log ZwirnT k st i a
xz = ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a. ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall (m :: * -> *) a. MultiMonad m => m (m a) -> m a
innerJoin (ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a)
-> ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ (a -> ZwirnT k st i a)
-> ZwirnT k st i a -> ZwirnT k st i (ZwirnT k st i a)
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\a
x -> if a
x a -> a -> Bool
forall a. Ord a => a -> a -> Bool
<= a
0 then ZwirnT k st i a
forall st i a. ZwirnT k st i a
forall (k :: * -> *) st i a. HasSilence k => ZwirnT k st i a
silence else a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a) -> a -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ a -> a
forall a. Floating a => a -> a
log a
x) ZwirnT k st i a
xz
sqrt :: ZwirnT k st i a -> ZwirnT k st i a
sqrt ZwirnT k st i a
xz = ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a. ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall (m :: * -> *) a. MultiMonad m => m (m a) -> m a
innerJoin (ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a)
-> ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ (a -> ZwirnT k st i a)
-> ZwirnT k st i a -> ZwirnT k st i (ZwirnT k st i a)
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\a
x -> if a
x a -> a -> Bool
forall a. Ord a => a -> a -> Bool
< a
0 then ZwirnT k st i a
forall st i a. ZwirnT k st i a
forall (k :: * -> *) st i a. HasSilence k => ZwirnT k st i a
silence else a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a) -> a -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ a -> a
forall a. Floating a => a -> a
sqrt a
x) ZwirnT k st i a
xz
** :: ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
(**) ZwirnT k st i a
xz ZwirnT k st i a
yz = ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a. ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall (m :: * -> *) a. MultiMonad m => m (m a) -> m a
innerJoin (ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a)
-> ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ (a -> a -> ZwirnT k st i a)
-> ZwirnT k st i a
-> ZwirnT k st i a
-> ZwirnT k st i (ZwirnT k st i a)
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (\a
x a
y -> if a
x a -> a -> Bool
forall a. Ord a => a -> a -> Bool
<= a
0 Bool -> Bool -> Bool
&& a -> a
forall a. Num a => a -> a
abs a
y a -> a -> Bool
forall a. Ord a => a -> a -> Bool
< a
1 then ZwirnT k st i a
forall st i a. ZwirnT k st i a
forall (k :: * -> *) st i a. HasSilence k => ZwirnT k st i a
silence else a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a) -> a -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ a
x a -> a -> a
forall a. Floating a => a -> a -> a
** a
y) ZwirnT k st i a
xz ZwirnT k st i a
yz
logBase :: ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
logBase ZwirnT k st i a
bz ZwirnT k st i a
xz = ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a. ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall (m :: * -> *) a. MultiMonad m => m (m a) -> m a
innerJoin (ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a)
-> ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ (a -> a -> ZwirnT k st i a)
-> ZwirnT k st i a
-> ZwirnT k st i a
-> ZwirnT k st i (ZwirnT k st i a)
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (\a
b a
x -> if a
b a -> a -> Bool
forall a. Ord a => a -> a -> Bool
< a
0 Bool -> Bool -> Bool
|| a
x a -> a -> Bool
forall a. Ord a => a -> a -> Bool
<= a
0 then ZwirnT k st i a
forall st i a. ZwirnT k st i a
forall (k :: * -> *) st i a. HasSilence k => ZwirnT k st i a
silence else a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a) -> a -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ a -> a -> a
forall a. Floating a => a -> a -> a
logBase a
b a
x) ZwirnT k st i a
bz ZwirnT k st i a
xz
sin :: ZwirnT k st i a -> ZwirnT k st i a
sin = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
sin
cos :: ZwirnT k st i a -> ZwirnT k st i a
cos = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
cos
tan :: ZwirnT k st i a -> ZwirnT k st i a
tan = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
tan
asin :: ZwirnT k st i a -> ZwirnT k st i a
asin = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
asin
acos :: ZwirnT k st i a -> ZwirnT k st i a
acos = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
acos
atan :: ZwirnT k st i a -> ZwirnT k st i a
atan = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
atan
sinh :: ZwirnT k st i a -> ZwirnT k st i a
sinh = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
sinh
cosh :: ZwirnT k st i a -> ZwirnT k st i a
cosh = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
cosh
tanh :: ZwirnT k st i a -> ZwirnT k st i a
tanh = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
tanh
asinh :: ZwirnT k st i a -> ZwirnT k st i a
asinh = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
asinh
acosh :: ZwirnT k st i a -> ZwirnT k st i a
acosh = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
acosh
atanh :: ZwirnT k st i a -> ZwirnT k st i a
atanh = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> a
forall a. Floating a => a -> a
atanh
mod :: (Real a, HasSilence k, MultiMonad k) => ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
mod :: forall a (k :: * -> *) st i.
(Real a, HasSilence k, MultiMonad k) =>
ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
mod ZwirnT k st i a
xz ZwirnT k st i a
yz = ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a. ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall (m :: * -> *) a. MultiMonad m => m (m a) -> m a
innerJoin (ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a)
-> ZwirnT k st i (ZwirnT k st i a) -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ (a -> a -> ZwirnT k st i a)
-> ZwirnT k st i a
-> ZwirnT k st i a
-> ZwirnT k st i (ZwirnT k st i a)
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (\a
x a
y -> if a
y a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a
0 then ZwirnT k st i a
forall st i a. ZwirnT k st i a
forall (k :: * -> *) st i a. HasSilence k => ZwirnT k st i a
silence else a -> ZwirnT k st i a
forall a. a -> ZwirnT k st i a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a -> ZwirnT k st i a) -> a -> ZwirnT k st i a
forall a b. (a -> b) -> a -> b
$ a -> a -> a
forall a. Real a => a -> a -> a
mod' a
x a
y) ZwirnT k st i a
xz ZwirnT k st i a
yz
frac :: (Real a, MultiMonad k) => ZwirnT k st i a -> ZwirnT k st i a
frac :: forall a (k :: * -> *) st i.
(Real a, MultiMonad k) =>
ZwirnT k st i a -> ZwirnT k st i a
frac = (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (a -> a -> a
forall a. Real a => a -> a -> a
`mod'` a
1)
trunc :: (RealFrac a, Integral b, Functor k) => ZwirnT k st i a -> ZwirnT k st i b
trunc :: forall a b (k :: * -> *) st i.
(RealFrac a, Integral b, Functor k) =>
ZwirnT k st i a -> ZwirnT k st i b
trunc = (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
truncate
ceil :: (RealFrac a, Integral b, Functor k) => ZwirnT k st i a -> ZwirnT k st i b
ceil :: forall a b (k :: * -> *) st i.
(RealFrac a, Integral b, Functor k) =>
ZwirnT k st i a -> ZwirnT k st i b
ceil = (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
ceiling
floor :: (RealFrac a, Integral b, Functor k) => ZwirnT k st i a -> ZwirnT k st i b
floor :: forall a b (k :: * -> *) st i.
(RealFrac a, Integral b, Functor k) =>
ZwirnT k st i a -> ZwirnT k st i b
floor = (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
Prelude.floor
round :: (RealFrac a, Integral b, Functor k) => ZwirnT k st i a -> ZwirnT k st i b
round :: forall a b (k :: * -> *) st i.
(RealFrac a, Integral b, Functor k) =>
ZwirnT k st i a -> ZwirnT k st i b
round = (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall a b. (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
forall b. Integral b => a -> b
forall a b. (RealFrac a, Integral b) => a -> b
Prelude.round
gcd :: (Integral a, Applicative k) => ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
gcd :: forall a (k :: * -> *) st i.
(Integral a, Applicative k) =>
ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
gcd = (a -> a -> a)
-> ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a -> a -> a
forall a. Integral a => a -> a -> a
Prelude.gcd
lcm :: (Integral a, Applicative k) => ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
lcm :: forall a (k :: * -> *) st i.
(Integral a, Applicative k) =>
ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
lcm = (a -> a -> a)
-> ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
forall a b c.
(a -> b -> c)
-> ZwirnT k st i a -> ZwirnT k st i b -> ZwirnT k st i c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 a -> a -> a
forall a. Integral a => a -> a -> a
Prelude.lcm
range :: (Num a, Applicative k) => ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
range :: forall a (k :: * -> *) st i.
(Num a, Applicative k) =>
ZwirnT k st i a
-> ZwirnT k st i a -> ZwirnT k st i a -> ZwirnT k st i a
range ZwirnT k st i a
lx ZwirnT k st i a
lu ZwirnT k st i a
lv = (\a
l a
u a
v -> (a
1 a -> a -> a
forall a. Num a => a -> a -> a
- a
v) a -> a -> a
forall a. Num a => a -> a -> a
* a
l a -> a -> a
forall a. Num a => a -> a -> a
+ a
v a -> a -> a
forall a. Num a => a -> a -> a
* a
u) (a -> a -> a -> a)
-> ZwirnT k st i a -> ZwirnT k st i (a -> a -> a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ZwirnT k st i a
lx ZwirnT k st i (a -> a -> a)
-> ZwirnT k st i a -> ZwirnT k st i (a -> a)
forall a b.
ZwirnT k st i (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ZwirnT k st i a
lu ZwirnT k st i (a -> a) -> ZwirnT k st i a -> ZwirnT k st i a
forall a b.
ZwirnT k st i (a -> b) -> ZwirnT k st i a -> ZwirnT k st i b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ZwirnT k st i a
lv
sine :: (Applicative k) => ZwirnT k st i Time
sine :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
sine = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> (Time -> Time
forall a. Floating a => a -> a
sin (Time
2 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
forall a. Floating a => a
pi Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
t) Time -> Time -> Time
forall a. Num a => a -> a -> a
+ Time
1) Time -> Time -> Time
forall a. Fractional a => a -> a -> a
/ Time
2)
sine2 :: (Applicative k) => ZwirnT k st i Time
sine2 :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
sine2 = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> Time -> Time
forall a. Floating a => a -> a
sin (Time
2 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
forall a. Floating a => a
pi Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
t))
cosine :: (Applicative k) => ZwirnT k st i Time
cosine :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
cosine = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> (Time -> Time
forall a. Floating a => a -> a
cos (Time
2 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
forall a. Floating a => a
pi Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
t) Time -> Time -> Time
forall a. Num a => a -> a -> a
+ Time
1) Time -> Time -> Time
forall a. Fractional a => a -> a -> a
/ Time
2)
cosine2 :: (Applicative k) => ZwirnT k st i Time
cosine2 :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
cosine2 = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> Time -> Time
forall a. Floating a => a -> a
cos (Time
2 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
forall a. Floating a => a
pi Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
t))
saw :: (Applicative k) => ZwirnT k st i Time
saw :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
saw = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (Time -> Time -> Time
forall a. Real a => a -> a -> a
`mod'` Time
1)
saw2 :: (Applicative k) => ZwirnT k st i Time
saw2 :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
saw2 = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> (Time -> Time -> Time
forall a. Real a => a -> a -> a
mod' Time
t Time
1 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
2) Time -> Time -> Time
forall a. Num a => a -> a -> a
- Time
1)
isaw :: (Applicative k) => ZwirnT k st i Time
isaw :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
isaw = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> Time
1 Time -> Time -> Time
forall a. Num a => a -> a -> a
- Time -> Time -> Time
forall a. Real a => a -> a -> a
mod' Time
t Time
1)
isaw2 :: (Applicative k) => ZwirnT k st i Time
isaw2 :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
isaw2 = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> Time
1 Time -> Time -> Time
forall a. Num a => a -> a -> a
- (Time -> Time -> Time
forall a. Real a => a -> a -> a
mod' Time
t Time
1 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
2))
square :: (Applicative k) => ZwirnT k st i Time
square :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
square = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> Integer -> Time
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Integer -> Time) -> Integer -> Time
forall a b. (a -> b) -> a -> b
$ Time -> Integer
forall b. Integral b => Time -> b
forall a b. (RealFrac a, Integral b) => a -> b
Prelude.floor (Time -> Integer) -> Time -> Integer
forall a b. (a -> b) -> a -> b
$ Time -> Time -> Time
forall a. Real a => a -> a -> a
mod' Time
t Time
1 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
2)
square2 :: (Applicative k) => ZwirnT k st i Time
square2 :: forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
square2 = (Time -> Time) -> ZwirnT k st i Time
forall (k :: * -> *) st i.
Applicative k =>
(Time -> Time) -> ZwirnT k st i Time
fromSignal (\Time
t -> Integer -> Time
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Integer -> Time) -> Integer -> Time
forall a b. (a -> b) -> a -> b
$ Time -> Integer
forall b. Integral b => Time -> b
forall a b. (RealFrac a, Integral b) => a -> b
Prelude.floor (Time -> Time -> Time
forall a. Real a => a -> a -> a
mod' Time
t Time
1 Time -> Time -> Time
forall a. Num a => a -> a -> a
* Time
2) Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
- Integer
1)
tri :: (Applicative k, HasSilence k) => ZwirnT k st i Time
tri :: forall (k :: * -> *) st i.
(Applicative k, HasSilence k) =>
ZwirnT k st i Time
tri = [ZwirnT k st i Time] -> ZwirnT k st i Time
forall (k :: * -> *) st i a.
HasSilence k =>
[ZwirnT k st i a] -> ZwirnT k st i a
fastcat [ZwirnT k st i Time
forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
saw, ZwirnT k st i Time
forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
isaw]
tri2 :: (Applicative k, HasSilence k) => ZwirnT k st i Time
tri2 :: forall (k :: * -> *) st i.
(Applicative k, HasSilence k) =>
ZwirnT k st i Time
tri2 = [ZwirnT k st i Time] -> ZwirnT k st i Time
forall (k :: * -> *) st i a.
HasSilence k =>
[ZwirnT k st i a] -> ZwirnT k st i a
fastcat [ZwirnT k st i Time
forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
saw2, ZwirnT k st i Time
forall (k :: * -> *) st i. Applicative k => ZwirnT k st i Time
isaw2]