packages feed

feldspar-language-0.4.0.2: Examples/Tutorial/Stream.hs

module Examples.Tutorial.Stream where

import qualified Prelude
import Feldspar
import Feldspar.Stream hiding (fir,iir)
import Feldspar.Vector (Vector, DVector
                       , replicate, length, scalarProd, reverse, vector)

fir :: DVector Float ->
       Stream (Data Float) -> Stream (Data Float)
fir b input =
    recurrenceI (replicate (length b) 0) input
                (\input -> scalarProd b (reverse input))

iir :: Data Float -> DVector Float -> DVector Float ->
       Stream (Data Float) -> Stream (Data Float)
iir a0 a b input =
    recurrenceIO (replicate (length b) 0) input
                 (replicate (length a) 0)
      (\input output -> 1 / a0 *
                        ( scalarProd b (reverse input)
                        - scalarProd a (reverse output))
      )