----------------------------------------------------------------------------- -- | -- Module : DSP.Flowgraph -- Copyright : (c) Matthew Donadio 2003 -- License : GPL -- -- Maintainer : m.p.donadio@ieee.org -- Stability : experimental -- Portability : portable -- -- Flowgraph functions -- -- DO NOT USE YET -- ----------------------------------------------------------------------------- module DSP.Flowgraph where ----------------------------------------------------------------------------- -- | Cascade of functions, eg -- -- @cascade [ f1, f2, f3 ] x == (f3 . f2 . f1) x@ cascade :: Num a => [[a] -> [a]] -- ^ [f_n(x)] -> [a] -- ^ x[n] -> [a] -- ^ y[n] cascade :: forall a. Num a => [[a] -> [a]] -> [a] -> [a] cascade [] = forall a. a -> a id cascade ([a] -> [a] f:[[a] -> [a]] fs) = forall a. Num a => [[a] -> [a]] -> [a] -> [a] cascade [[a] -> [a]] fs forall b c a. (b -> c) -> (a -> b) -> a -> c . [a] -> [a] f ----------------------------------------------------------------------------- -- | Gain node -- -- @y[n] = a * x[n]@ gain :: Num a => a -- ^ a -> [a] -- ^ x[n] -> [a] -- ^ y[n] gain :: forall a. Num a => a -> [a] -> [a] gain a x = forall a b. (a -> b) -> [a] -> [b] map (a xforall a. Num a => a -> a -> a *) ----------------------------------------------------------------------------- -- | Bias node -- -- @y[n] = x[n] + a@ bias :: Num a => a -- ^ a -> [a] -- ^ x[n] -> [a] -- ^ y[n] bias :: forall a. Num a => a -> [a] -> [a] bias a x = forall a b. (a -> b) -> [a] -> [b] map (a xforall a. Num a => a -> a -> a +) ----------------------------------------------------------------------------- -- | Adder node -- -- @z[n] = x[n] + y[n]@ adder :: Num a => [a] -- ^ x[n] -> [a] -- ^ y[n] -> [a] -- ^ z[n] adder :: forall a. Num a => [a] -> [a] -> [a] adder = forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] zipWith forall a. Num a => a -> a -> a (+)