sdr-0.1.0.12: A software defined radio library

Safe HaskellNone
LanguageHaskell2010

SDR.FilterInternal

Description

Functions used internally by the SDR.Filter module. Most of these are not actually used but exist for benchmarking purposes to determine the fastest filter implementation.

Documentation

filterHighLevel :: (PrimMonad m, Functor m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => v b -> Int -> v a -> vm (PrimState m) a -> m () Source #

filterImperative1 :: (PrimMonad m, Functor m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => v b -> Int -> v a -> vm (PrimState m) a -> m () Source #

filterImperative2 :: (PrimMonad m, Functor m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => v b -> Int -> v a -> vm (PrimState m) a -> m () Source #

type FilterCRR = CInt -> CInt -> Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> IO () Source #

type FilterRR = Vector Float -> Int -> Vector Float -> MVector RealWorld Float -> IO () Source #

type FilterRC = Vector Float -> Int -> Vector (Complex Float) -> MVector RealWorld (Complex Float) -> IO () Source #

decimateHighLevel :: (PrimMonad m, Functor m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => Int -> v b -> Int -> v a -> vm (PrimState m) a -> m () Source #

type DecimateCRR = CInt -> CInt -> CInt -> Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> IO () Source #

type DecimateRR = Int -> Vector Float -> Int -> Vector Float -> MVector RealWorld Float -> IO () Source #

type DecimateRC = Int -> Vector Float -> Int -> Vector (Complex Float) -> MVector RealWorld (Complex Float) -> IO () Source #

resampleHighLevel :: (PrimMonad m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => Int -> Int -> v b -> Int -> Int -> v a -> vm (PrimState m) a -> m Int Source #

resample_c :: CInt -> CInt -> CInt -> CInt -> CInt -> Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> IO () Source #

resampleCRR :: Int -> Int -> Int -> Int -> Vector Float -> Vector Float -> MVector RealWorld Float -> IO () Source #

pad :: a -> Int -> [a] -> [a] Source #

strideList :: Int -> [a] -> [a] Source #

data Coeffs Source #

Constructors

Coeffs 

Fields

resampleFFIR :: (Ptr CFloat -> Ptr CFloat -> IO CInt) -> Vector Float -> MVector RealWorld Float -> IO Int Source #

resampleFFIC :: (Ptr CFloat -> Ptr CFloat -> IO CInt) -> Vector (Complex Float) -> MVector RealWorld (Complex Float) -> IO Int Source #

type ResampleR = CInt -> CInt -> CInt -> CInt -> Ptr CInt -> Ptr (Ptr CFloat) -> Ptr CFloat -> Ptr CFloat -> IO CInt Source #

mkResampler :: ResampleR -> Int -> Int -> Int -> [Float] -> IO (Int -> Int -> Vector Float -> MVector RealWorld Float -> IO Int) Source #

type ResampleRR = Int -> Int -> [Float] -> IO (Int -> Int -> Vector Float -> MVector RealWorld Float -> IO Int) Source #

type ResampleRC = Int -> Int -> [Float] -> IO (Int -> Int -> Vector (Complex Float) -> MVector RealWorld (Complex Float) -> IO Int) Source #

mkResamplerC :: ResampleR -> Int -> Int -> Int -> [Float] -> IO (Int -> Int -> Vector (Complex Float) -> MVector RealWorld (Complex Float) -> IO Int) Source #

decimateCrossHighLevel :: (PrimMonad m, Functor m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => Int -> v b -> Int -> v a -> v a -> vm (PrimState m) a -> m () Source #

filterCrossHighLevel :: (PrimMonad m, Functor m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => v b -> Int -> v a -> v a -> vm (PrimState m) a -> m () Source #

resampleCrossHighLevel :: (PrimMonad m, Num a, Mult a b, Vector v a, Vector v b, MVector vm a) => Int -> Int -> v b -> Int -> Int -> v a -> v a -> vm (PrimState m) a -> m Int Source #

dcBlocker :: Int -> Float -> Float -> Vector Float -> MVector RealWorld Float -> IO (Float, Float) Source #