module Test where import Data.Array.Repa hiding (map) import qualified Data.Array.Repa as R (map) type DIM1_U_D = Array U DIM1 Double type DIM1_D_D = Array D DIM1 Double calc :: DIM1_U_D -> DIM1_U_D -> DIM1_D_D calc k b = let sizeB = size (extent b) sizeK = size (extent k) p kp bp (Z:.ic) = sum $ map (\i -> kp (Z:.i) * bp (Z:.ic+i)) [0..sizeK-1] in traverse2 k b (\_ _ -> Z:.sizeB-sizeK+1) p -- example base, kernel :: DIM1_U_D base = fromListUnboxed (Z:.5) [3, 5, 2, 9, 4] kernel = fromListUnboxed (Z:.3) [6, 3, 5] result = toList (calc kernel base) -- [43, 81, 59]