module Data.Array.Repa.Algorithms.DFT.Center
( center1d
, center2d
, center3d)
where
import Data.Array.Repa as R
import Data.Array.Repa.Algorithms.Complex as R
center1d
:: Source r Complex
=> Array r DIM1 Complex -> Array D DIM1 Complex
center1d arr
= R.traverse arr id
(\get ix@(_ :. x) -> ((1) ^ x) * get ix)
center2d
:: Source r Complex
=> Array r DIM2 Complex -> Array D DIM2 Complex
center2d arr
= R.traverse arr id
(\get ix@(_ :. y :. x) -> ((1) ^ (y + x)) * get ix)
center3d
:: Source r Complex
=> Array r DIM3 Complex -> Array D DIM3 Complex
center3d arr
= R.traverse arr id
(\get ix@(_ :. z :. y :. x) -> ((1) ^ (z + y + x)) * get ix)