repa-examples-3.1.0.1: examples/Sobel/src-repa/Solver.hs
{-# LANGUAGE PackageImports, BangPatterns, QuasiQuotes, PatternGuards #-}
{-# OPTIONS -Wall -fno-warn-missing-signatures -fno-warn-incomplete-patterns #-}
module Solver
( Image
, gradientX
, gradientY )
where
import Data.Array.Repa as R
import Data.Array.Repa.Stencil as R
import Data.Array.Repa.Stencil.Dim2 as R
type Image = Array U DIM2 Float
gradientX :: Monad m => Image -> m Image
gradientX img
= img `deepSeqArray` computeP
$ forStencil2 (BoundConst 0) img
[stencil2| -1 0 1
-2 0 2
-1 0 1 |]
{-# NOINLINE gradientX #-}
gradientY :: Monad m => Image -> m Image
gradientY img
= img `deepSeqArray` computeP
$ forStencil2 (BoundConst 0) img
[stencil2| 1 2 1
0 0 0
-1 -2 -1 |]
{-# NOINLINE gradientY #-}