knead-0.5: Repa-like array processing using LLVM JIT

Safe HaskellNone

Data.Array.Knead.Simple.ShapeDependent

Synopsis

Documentation

shape :: (C array, C sh, Scalar z) => array sh a -> array z shSource

backpermute :: (C array, C sh0, Index sh0 ~ ix0, C sh1, Index sh1 ~ ix1) => (Exp sh0 -> Exp sh1) -> (Exp ix1 -> Exp ix0) -> array sh0 a -> array sh1 aSource

backpermuteExtra :: (C array, C sh0, Index sh0 ~ ix0, C sh1, Index sh1 ~ ix1, C sh, Index sh ~ ix) => (Exp sh0 -> Exp sh1 -> Exp sh) -> (Exp ix -> Exp ix0) -> array sh0 a -> array sh1 b -> array sh aSource

This is between backpermute and backpermute2. You can access the shapes of two arrays, but only the content of one of them. This is necessary if the second array contributes only a virtual dimension.

backpermute2 :: (C array, C sh0, Index sh0 ~ ix0, C sh1, Index sh1 ~ ix1, C sh, Index sh ~ ix) => (Exp sh0 -> Exp sh1 -> Exp sh) -> (Exp ix -> Exp ix0) -> (Exp ix -> Exp ix1) -> (Exp a -> Exp b -> Exp c) -> array sh0 a -> array sh1 b -> array sh cSource

fill :: C array => (Exp sh0 -> Exp sh1) -> Exp b -> array sh0 a -> array sh1 bSource