packages feed

dph-lifted-copy 0.6.1.1 → 0.7.0.1

raw patch · 7 files changed

+296/−17 lines, 7 filesdep ~basedep ~dph-basedep ~dph-prim-parPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, dph-base, dph-prim-par, template-haskell, vector

API changes (from Hackage documentation)

- Data.Array.Parallel.Prelude.Double: (**, logBase) :: Double -> Double -> Double
- Data.Array.Parallel.Prelude.Double: (+, *, -) :: Double -> Double -> Double
- Data.Array.Parallel.Prelude.Double: (==, >=, >, <=, <, /=) :: Double -> Double -> Bool
- Data.Array.Parallel.Prelude.Double: exp, acosh, atanh, asinh, cosh, tanh, sinh, acos, atan, asin, cos, tan, sin, log, sqrt :: Double -> Double
- Data.Array.Parallel.Prelude.Double: min, max :: Double -> Double -> Double
- Data.Array.Parallel.Prelude.Double: minimumP, maximumP :: PArr Double -> Double
- Data.Array.Parallel.Prelude.Double: negate, abs :: Double -> Double
- Data.Array.Parallel.Prelude.Double: sumP, productP :: PArr Double -> Double
- Data.Array.Parallel.Prelude.Double: truncate, floor, ceiling, round :: Double -> Int
- Data.Array.Parallel.Prelude.Float: (**, logBase) :: Float -> Float -> Float
- Data.Array.Parallel.Prelude.Float: (+, *, -) :: Float -> Float -> Float
- Data.Array.Parallel.Prelude.Float: (==, >=, >, <=, <, /=) :: Float -> Float -> Bool
- Data.Array.Parallel.Prelude.Float: exp, acosh, atanh, asinh, cosh, tanh, sinh, acos, atan, asin, cos, tan, sin, log, sqrt :: Float -> Float
- Data.Array.Parallel.Prelude.Float: min, max :: Float -> Float -> Float
- Data.Array.Parallel.Prelude.Float: minimumP, maximumP :: PArr Float -> Float
- Data.Array.Parallel.Prelude.Float: negate, abs :: Float -> Float
- Data.Array.Parallel.Prelude.Float: sumP, productP :: PArr Float -> Float
- Data.Array.Parallel.Prelude.Float: truncate, floor, ceiling, round :: Float -> Int
- Data.Array.Parallel.Prelude.Int: (+, *, -) :: Int -> Int -> Int
- Data.Array.Parallel.Prelude.Int: (==, >=, >, <=, <, /=) :: Int -> Int -> Bool
- Data.Array.Parallel.Prelude.Int: div, mod :: Int -> Int -> Int
- Data.Array.Parallel.Prelude.Int: min, max :: Int -> Int -> Int
- Data.Array.Parallel.Prelude.Int: minimumP, maximumP :: PArr Int -> Int
- Data.Array.Parallel.Prelude.Int: negate, abs :: Int -> Int
- Data.Array.Parallel.Prelude.Int: sumP, productP :: PArr Int -> Int
- Data.Array.Parallel.Prelude.Word8: (+, *, -) :: Word8 -> Word8 -> Word8
- Data.Array.Parallel.Prelude.Word8: (==, >=, >, <=, <, /=) :: Word8 -> Word8 -> Bool
- Data.Array.Parallel.Prelude.Word8: div, mod :: Word8 -> Word8 -> Word8
- Data.Array.Parallel.Prelude.Word8: min, max :: Word8 -> Word8 -> Word8
- Data.Array.Parallel.Prelude.Word8: minimumP, maximumP :: PArr Word8 -> Word8
- Data.Array.Parallel.Prelude.Word8: negate, abs :: Word8 -> Word8
- Data.Array.Parallel.Prelude.Word8: sumP, productP :: PArr Word8 -> Word8
+ Data.Array.Parallel.Prelude.Double: (*) :: Double -> Double -> Double
+ Data.Array.Parallel.Prelude.Double: (**) :: Double -> Double -> Double
+ Data.Array.Parallel.Prelude.Double: (+) :: Double -> Double -> Double
+ Data.Array.Parallel.Prelude.Double: (-) :: Double -> Double -> Double
+ Data.Array.Parallel.Prelude.Double: (/=) :: Double -> Double -> Bool
+ Data.Array.Parallel.Prelude.Double: (<) :: Double -> Double -> Bool
+ Data.Array.Parallel.Prelude.Double: (<=) :: Double -> Double -> Bool
+ Data.Array.Parallel.Prelude.Double: (==) :: Double -> Double -> Bool
+ Data.Array.Parallel.Prelude.Double: (>) :: Double -> Double -> Bool
+ Data.Array.Parallel.Prelude.Double: (>=) :: Double -> Double -> Bool
+ Data.Array.Parallel.Prelude.Double: abs :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: acos :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: acosh :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: asin :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: asinh :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: atan :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: atanh :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: ceiling :: Double -> Int
+ Data.Array.Parallel.Prelude.Double: cos :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: cosh :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: exp :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: floor :: Double -> Int
+ Data.Array.Parallel.Prelude.Double: log :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: logBase :: Double -> Double -> Double
+ Data.Array.Parallel.Prelude.Double: max :: Double -> Double -> Double
+ Data.Array.Parallel.Prelude.Double: maximumP :: PArr Double -> Double
+ Data.Array.Parallel.Prelude.Double: min :: Double -> Double -> Double
+ Data.Array.Parallel.Prelude.Double: minimumP :: PArr Double -> Double
+ Data.Array.Parallel.Prelude.Double: negate :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: productP :: PArr Double -> Double
+ Data.Array.Parallel.Prelude.Double: round :: Double -> Int
+ Data.Array.Parallel.Prelude.Double: sin :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: sinh :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: sqrt :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: sumP :: PArr Double -> Double
+ Data.Array.Parallel.Prelude.Double: tan :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: tanh :: Double -> Double
+ Data.Array.Parallel.Prelude.Double: truncate :: Double -> Int
+ Data.Array.Parallel.Prelude.Float: (*) :: Float -> Float -> Float
+ Data.Array.Parallel.Prelude.Float: (**) :: Float -> Float -> Float
+ Data.Array.Parallel.Prelude.Float: (+) :: Float -> Float -> Float
+ Data.Array.Parallel.Prelude.Float: (-) :: Float -> Float -> Float
+ Data.Array.Parallel.Prelude.Float: (/=) :: Float -> Float -> Bool
+ Data.Array.Parallel.Prelude.Float: (<) :: Float -> Float -> Bool
+ Data.Array.Parallel.Prelude.Float: (<=) :: Float -> Float -> Bool
+ Data.Array.Parallel.Prelude.Float: (==) :: Float -> Float -> Bool
+ Data.Array.Parallel.Prelude.Float: (>) :: Float -> Float -> Bool
+ Data.Array.Parallel.Prelude.Float: (>=) :: Float -> Float -> Bool
+ Data.Array.Parallel.Prelude.Float: abs :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: acos :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: acosh :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: asin :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: asinh :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: atan :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: atanh :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: ceiling :: Float -> Int
+ Data.Array.Parallel.Prelude.Float: cos :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: cosh :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: exp :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: floor :: Float -> Int
+ Data.Array.Parallel.Prelude.Float: log :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: logBase :: Float -> Float -> Float
+ Data.Array.Parallel.Prelude.Float: max :: Float -> Float -> Float
+ Data.Array.Parallel.Prelude.Float: maximumP :: PArr Float -> Float
+ Data.Array.Parallel.Prelude.Float: min :: Float -> Float -> Float
+ Data.Array.Parallel.Prelude.Float: minimumP :: PArr Float -> Float
+ Data.Array.Parallel.Prelude.Float: negate :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: productP :: PArr Float -> Float
+ Data.Array.Parallel.Prelude.Float: round :: Float -> Int
+ Data.Array.Parallel.Prelude.Float: sin :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: sinh :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: sqrt :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: sumP :: PArr Float -> Float
+ Data.Array.Parallel.Prelude.Float: tan :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: tanh :: Float -> Float
+ Data.Array.Parallel.Prelude.Float: truncate :: Float -> Int
+ Data.Array.Parallel.Prelude.Int: (*) :: Int -> Int -> Int
+ Data.Array.Parallel.Prelude.Int: (+) :: Int -> Int -> Int
+ Data.Array.Parallel.Prelude.Int: (-) :: Int -> Int -> Int
+ Data.Array.Parallel.Prelude.Int: (/=) :: Int -> Int -> Bool
+ Data.Array.Parallel.Prelude.Int: (<) :: Int -> Int -> Bool
+ Data.Array.Parallel.Prelude.Int: (<=) :: Int -> Int -> Bool
+ Data.Array.Parallel.Prelude.Int: (==) :: Int -> Int -> Bool
+ Data.Array.Parallel.Prelude.Int: (>) :: Int -> Int -> Bool
+ Data.Array.Parallel.Prelude.Int: (>=) :: Int -> Int -> Bool
+ Data.Array.Parallel.Prelude.Int: abs :: Int -> Int
+ Data.Array.Parallel.Prelude.Int: div :: Int -> Int -> Int
+ Data.Array.Parallel.Prelude.Int: max :: Int -> Int -> Int
+ Data.Array.Parallel.Prelude.Int: maximumP :: PArr Int -> Int
+ Data.Array.Parallel.Prelude.Int: min :: Int -> Int -> Int
+ Data.Array.Parallel.Prelude.Int: minimumP :: PArr Int -> Int
+ Data.Array.Parallel.Prelude.Int: mod :: Int -> Int -> Int
+ Data.Array.Parallel.Prelude.Int: negate :: Int -> Int
+ Data.Array.Parallel.Prelude.Int: productP :: PArr Int -> Int
+ Data.Array.Parallel.Prelude.Int: sumP :: PArr Int -> Int
+ Data.Array.Parallel.Prelude.Word8: (*) :: Word8 -> Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: (+) :: Word8 -> Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: (-) :: Word8 -> Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: (/=) :: Word8 -> Word8 -> Bool
+ Data.Array.Parallel.Prelude.Word8: (<) :: Word8 -> Word8 -> Bool
+ Data.Array.Parallel.Prelude.Word8: (<=) :: Word8 -> Word8 -> Bool
+ Data.Array.Parallel.Prelude.Word8: (==) :: Word8 -> Word8 -> Bool
+ Data.Array.Parallel.Prelude.Word8: (>) :: Word8 -> Word8 -> Bool
+ Data.Array.Parallel.Prelude.Word8: (>=) :: Word8 -> Word8 -> Bool
+ Data.Array.Parallel.Prelude.Word8: abs :: Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: div :: Word8 -> Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: max :: Word8 -> Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: maximumP :: PArr Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: min :: Word8 -> Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: minimumP :: PArr Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: mod :: Word8 -> Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: negate :: Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: productP :: PArr Word8 -> Word8
+ Data.Array.Parallel.Prelude.Word8: sumP :: PArr Word8 -> Word8

Files

Data/Array/Parallel/Lifted/Closure.hs view
@@ -4,7 +4,8 @@   mkClosure, mkClosureP, ($:), ($:^),   closure, liftedClosure, liftedApply, -  closure1, closure2, closure3, closure4+  closure1, closure2, closure3, closure4, closure5,+  closure6, closure7, closure8 ) where import Data.Array.Parallel.PArray.PReprInstances () import Data.Array.Parallel.PArray.PDataInstances@@ -76,7 +77,7 @@ -- | Apply a closure to its argument. -- ($:) :: forall a b. (a :-> b) -> a -> b-{-# INLINE ($:) #-}+{-# INLINE [1] ($:) #-} Clo f _ e $: a = f e a  {-# RULES@@ -242,3 +243,123 @@      fv_4 (x, y, z) v = fv x y z v     fl_4 ps vs = case unzip3PA# ps of (xs, ys, zs) -> fl xs ys zs vs+++-- | Arity-5 closures.+closure5 :: (PA a, PA b, PA c, PA d, PA e)+         => (a -> b -> c -> d -> e -> f)+         -> (PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray f)+         -> (a :-> b :-> c :-> d :-> e :-> f)++{-# INLINE closure5 #-}+closure5 fv fl = mkClosure fv_1 fl_1 ()+  where+    fv_1 _  x  = mkClosure  fv_2 fl_2 x+    fl_1 _  xs = mkClosureP fv_2 fl_2 xs++    fv_2 x  y  = mkClosure  fv_3 fl_3 (x, y)+    fl_2 xs ys = mkClosureP fv_3 fl_3 (zipPA# xs ys)++    fv_3 (x, y)  z  = mkClosure  fv_4 fl_4 (x, y, z)+    fl_3 xys     zs = case unzipPA# xys of (xs, ys) -> mkClosureP fv_4 fl_4 (zip3PA# xs ys zs)++    fv_4 (w, x, y) z = mkClosure fv_5 fl_5 (w, x, y, z) +    fl_4 ps zs = case unzip3PA# ps of (ws, xs, ys) -> mkClosureP fv_5 fl_5  (zip4PA# ws xs ys zs)++    fv_5 (v, w, x, y) z = fv v w x y z+    fl_5 ps zs = case unzip4PA# ps of (vs, ws, xs, ys) -> fl vs ws xs ys zs+++-- | Arity-6 closures.+closure6 :: (PA a, PA b, PA c, PA d, PA e, PA f)+         => (a -> b -> c -> d -> e -> f -> g)+         -> (PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray f -> PArray g)+         -> (a :-> b :-> c :-> d :-> e :-> f :-> g)++{-# INLINE closure6 #-}+closure6 fv fl = mkClosure fv_1 fl_1 ()+  where+    fv_1 _  x  = mkClosure  fv_2 fl_2 x+    fl_1 _  xs = mkClosureP fv_2 fl_2 xs++    fv_2 x  y  = mkClosure  fv_3 fl_3 (x, y)+    fl_2 xs ys = mkClosureP fv_3 fl_3 (zipPA# xs ys)++    fv_3 (x, y)  z  = mkClosure  fv_4 fl_4 (x, y, z)+    fl_3 xys     zs = case unzipPA# xys of (xs, ys) -> mkClosureP fv_4 fl_4 (zip3PA# xs ys zs)++    fv_4 (w, x, y) z = mkClosure fv_5 fl_5 (w, x, y, z) +    fl_4 ps zs = case unzip3PA# ps of (ws, xs, ys) -> mkClosureP fv_5 fl_5  (zip4PA# ws xs ys zs)++    fv_5 (v, w, x, y) z = mkClosure fv_6 fl_6 (v, w, x, y, z) +    fl_5 ps zs = case unzip4PA# ps of (vs, ws, xs, ys) -> mkClosureP fv_6 fl_6  (zip5PA# vs ws xs ys zs)++    fv_6 (u, v, w, x, y) z = fv u v w x y z+    fl_6 ps zs = case unzip5PA# ps of (us, vs, ws, xs, ys) -> fl us vs ws xs ys zs++-- | Arity-7 closures.+closure7 :: (PA a, PA b, PA c, PA d, PA e, PA f, PA g)+         => (a -> b -> c -> d -> e -> f -> g -> h)+         -> (PArray a -> PArray b -> PArray c -> PArray d -> PArray e +         -> PArray f -> PArray g -> PArray h)+         -> (a :-> b :-> c :-> d :-> e :-> f :-> g :-> h)++{-# INLINE closure7 #-}+closure7 fv fl = mkClosure fv_1 fl_1 ()+  where+    fv_1 _  x  = mkClosure  fv_2 fl_2 x+    fl_1 _  xs = mkClosureP fv_2 fl_2 xs++    fv_2 x  y  = mkClosure  fv_3 fl_3 (x, y)+    fl_2 xs ys = mkClosureP fv_3 fl_3 (zipPA# xs ys)++    fv_3 (x, y)  z  = mkClosure  fv_4 fl_4 (x, y, z)+    fl_3 xys     zs = case unzipPA# xys of (xs, ys) -> mkClosureP fv_4 fl_4 (zip3PA# xs ys zs)++    fv_4 (w, x, y) z = mkClosure fv_5 fl_5 (w, x, y, z) +    fl_4 ps zs = case unzip3PA# ps of (ws, xs, ys) -> mkClosureP fv_5 fl_5  (zip4PA# ws xs ys zs)++    fv_5 (v, w, x, y) z = mkClosure fv_6 fl_6 (v, w, x, y, z) +    fl_5 ps zs = case unzip4PA# ps of (vs, ws, xs, ys) -> mkClosureP fv_6 fl_6  (zip5PA# vs ws xs ys zs)++    fv_6 (u, v, w, x, y) z = mkClosure fv_7 fl_7 (u, v, w, x, y, z) +    fl_6 ps zs = case unzip5PA# ps of (us, vs, ws, xs, ys) -> mkClosureP fv_7 fl_7  (zip6PA# us vs ws xs ys zs)++    fv_7 (t, u, v, w, x, y) z = fv t u v w x y z+    fl_7 ps zs = case unzip6PA# ps of (ts, us, vs, ws, xs, ys) -> fl ts us vs ws xs ys zs++-- | Arity-8 closures.+closure8 :: (PA a, PA b, PA c, PA d, PA e, PA f, PA g, PA h)+         => (a -> b -> c -> d -> e -> f -> g -> h -> i)+         -> (PArray a -> PArray b -> PArray c -> PArray d -> PArray e +         -> PArray f -> PArray g -> PArray h -> PArray i)+         -> (a :-> b :-> c :-> d :-> e :-> f :-> g :-> h :-> i)++{-# INLINE closure8 #-}+closure8 fv fl = mkClosure fv_1 fl_1 ()+  where+    fv_1 _  x  = mkClosure  fv_2 fl_2 x+    fl_1 _  xs = mkClosureP fv_2 fl_2 xs++    fv_2 x  y  = mkClosure  fv_3 fl_3 (x, y)+    fl_2 xs ys = mkClosureP fv_3 fl_3 (zipPA# xs ys)++    fv_3 (x, y)  z  = mkClosure  fv_4 fl_4 (x, y, z)+    fl_3 xys     zs = case unzipPA# xys of (xs, ys) -> mkClosureP fv_4 fl_4 (zip3PA# xs ys zs)++    fv_4 (w, x, y) z = mkClosure fv_5 fl_5 (w, x, y, z) +    fl_4 ps zs = case unzip3PA# ps of (ws, xs, ys) -> mkClosureP fv_5 fl_5  (zip4PA# ws xs ys zs)++    fv_5 (v, w, x, y) z = mkClosure fv_6 fl_6 (v, w, x, y, z) +    fl_5 ps zs = case unzip4PA# ps of (vs, ws, xs, ys) -> mkClosureP fv_6 fl_6  (zip5PA# vs ws xs ys zs)++    fv_6 (u, v, w, x, y) z = mkClosure fv_7 fl_7 (u, v, w, x, y, z) +    fl_6 ps zs = case unzip5PA# ps of (us, vs, ws, xs, ys) -> mkClosureP fv_7 fl_7  (zip6PA# us vs ws xs ys zs)++    fv_7 (t, u, v, w, x, y) z = mkClosure fv_8 fl_8 (t, u, v, w, x, y, z) +    fl_7 ps zs = case unzip6PA# ps of (ts, us, vs, ws, xs, ys) -> mkClosureP fv_8 fl_8  (zip7PA# ts us vs ws xs ys zs)++    fv_8 (s, t, u, v, w, x, y) z = fv s t u v w x y z+    fl_8 ps zs = case unzip7PA# ps of (ss, ts, us, vs, ws, xs, ys) -> fl ss ts us vs ws xs ys zs++   
Data/Array/Parallel/Lifted/Combinators.hs view
@@ -23,7 +23,8 @@ -- module Data.Array.Parallel.Lifted.Combinators (   lengthPA, replicatePA, singletonPA, mapPA, crossMapPA,-  zipPA, zip3PA, zipWithPA, zipWith3PA, unzipPA, unzip3PA, +  zipPA, zip3PA, zip4PA, zipWithPA, zipWith3PA, unzipPA, unzip3PA, unzip4PA ,+  zipWith4PA,   packPA, filterPA, combine2PA, indexPA, concatPA, appPA, enumFromToPA_Int,   indexedPA, slicePA, updatePA, bpermutePA, @@ -191,6 +192,22 @@   = PArray n# (PNested segd (P_3 xs ys zs))  ++zip4PA :: (PA a, PA b, PA c, PA d) => PArray a :-> PArray b :-> PArray c :-> PArray d :-> PArray (a, b, c, d)+{-# INLINE zip4PA #-}+zip4PA = closure4 zip4PA_v zip4PA_l++zip4PA_v :: (PA a, PA b, PA c, PA d) => PArray a -> PArray b -> PArray c -> PArray d -> PArray (a, b, c, d)+{-# INLINE_PA zip4PA_v #-}+zip4PA_v xs ys = zip4PA# xs ys++zip4PA_l :: (PA a, PA b, PA c, PA d)+         => PArray (PArray a) -> PArray (PArray b) -> PArray (PArray c) -> PArray (PArray d) -> PArray (PArray (a, b, c, d))+{-# INLINE_PA zip4PA_l #-}+zip4PA_l (PArray n# (PNested segd ws)) (PArray _ (PNested _ xs)) (PArray _ (PNested _ ys)) (PArray _ (PNested _ zs))+  = PArray n# (PNested segd (P_4 ws xs ys zs))++ -- zipWith -------------------------------------------------------------------- -- |Map a function over multiple arrays at once. @@ -233,6 +250,26 @@       (replicatelPA# (segdPA# ass) fs $:^ concatPA# ass $:^ concatPA# bss $:^ concatPA# css)  +zipWith4PA :: (PA a, PA b, PA c, PA d, PA e)+           => (a :-> b :-> c :-> d :-> e) :-> PArray a :-> PArray b :-> PArray c :-> PArray d :-> PArray e+{-# INLINE zipWith4PA #-}+zipWith4PA = closure5 zipWith4PA_v zipWith4PA_l++zipWith4PA_v :: (PA a, PA b, PA c, PA d, PA e)+             => (a :-> b :-> c :-> d :-> e) -> PArray a -> PArray b -> PArray c -> PArray d -> PArray e+{-# INLINE_PA zipWith4PA_v #-}+zipWith4PA_v f as bs cs ds = replicatePA# (lengthPA# as) f $:^ as $:^ bs $:^ cs $:^ ds++zipWith4PA_l :: (PA a, PA b, PA c, PA d, PA e)+             => PArray (a :-> b :-> c :-> d :-> e) +             -> PArray (PArray a) -> PArray (PArray b) -> PArray (PArray c)+             -> PArray (PArray d) -> PArray (PArray e)+{-# INLINE_PA zipWith4PA_l #-}+zipWith4PA_l fs ass bss css dss+  = copySegdPA# ass+      (replicatelPA# (segdPA# ass) fs $:^ concatPA# ass $:^ concatPA# bss $:^ concatPA# css $:^ concatPA# dss)++ -- unzip ---------------------------------------------------------------------- -- |Transform an array of tuples into a tuple of arrays. @@ -263,6 +300,21 @@ unzip3PA_l xyzss = zip3PA# (copySegdPA# xyzss xs) (copySegdPA# xyzss ys) (copySegdPA# xyzss zs)   where     (xs, ys, zs) = unzip3PA# (concatPA# xyzss)+++unzip4PA :: (PA a, PA b, PA c, PA d) => PArray (a, b, c, d) :-> (PArray a, PArray b, PArray c, PArray d)+{-# INLINE unzip4PA #-}+unzip4PA = closure1 unzip4PA_v unzip4PA_l++unzip4PA_v :: (PA a, PA b, PA c, PA d) => PArray (a, b, c, d) -> (PArray a, PArray b, PArray c, PArray d)+{-# INLINE_PA unzip4PA_v #-}+unzip4PA_v abs' = unzip4PA# abs'++unzip4PA_l :: (PA a, PA b, PA c) => PArray (PArray (a, b, c, d)) -> PArray (PArray a, PArray b, PArray c, PArray d)+{-# INLINE_PA unzip4PA_l #-}+unzip4PA_l wxyzss = zip4PA# (copySegdPA# wxyzss ws) (copySegdPA# wxyzss xs) (copySegdPA# wxyzss ys) (copySegdPA# wxyzss zs) +  where+    (ws, xs, ys, zs) = unzip4PA# (concatPA# wxyzss)    -- packPA ---------------------------------------------------------------------
Data/Array/Parallel/Lifted/Scalar.hs view
@@ -132,6 +132,64 @@         $ U.zipWith3 f (toUArray xs) (toUArray ys) (toUArray zs)  +++-- | Zip four arrays, yielding a new array.+scalar_zipWith4+        :: (Scalar a, Scalar b, Scalar c, Scalar d, Scalar e)+        => (a -> b -> c -> d -> e) -> PArray a -> PArray b -> PArray c -> PArray d -> PArray e++{-# INLINE_PA scalar_zipWith4 #-}+scalar_zipWith4 f ws xs ys zs +        = fromUArray' (prim_lengthPA ws)+        $ U.zipWith4 f (toUArray ws) (toUArray xs) (toUArray ys) (toUArray zs)+++-- | Zip five arrays, yielding a new array.+scalar_zipWith5+        :: (Scalar a, Scalar b, Scalar c, Scalar d, Scalar e, Scalar f)+        => (a -> b -> c -> d -> e -> f) -> PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray f++{-# INLINE_PA scalar_zipWith5 #-}+scalar_zipWith5 f vs ws xs ys zs  +        = fromUArray' (prim_lengthPA vs)+        $ U.zipWith5 f (toUArray vs) (toUArray ws) (toUArray xs) (toUArray ys) (toUArray zs)+        +        +-- | Zip six arrays, yielding a new array.+scalar_zipWith6+        :: (Scalar a, Scalar b, Scalar c, Scalar d, Scalar e, Scalar f, Scalar g)+        => (a -> b -> c -> d -> e -> f -> g) +        -> PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray  f-> PArray g++{-# INLINE_PA scalar_zipWith6 #-}+scalar_zipWith6 f us vs ws xs ys zs +        = fromUArray' (prim_lengthPA us)+        $ U.zipWith6 f (toUArray us) (toUArray vs) (toUArray ws) (toUArray xs) (toUArray ys) (toUArray zs)+        +-- | Zip seven arrays, yielding a new array.+scalar_zipWith7+        :: (Scalar a, Scalar b, Scalar c, Scalar d, Scalar e, Scalar f, Scalar g, Scalar h)+        => (a -> b -> c -> d -> e -> f -> g -> h) +        -> PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray  f-> PArray g -> PArray h++{-# INLINE_PA scalar_zipWith7 #-}+scalar_zipWith7 f ts us vs ws xs ys zs +        = fromUArray' (prim_lengthPA us)+        $ U.zipWith7 f (toUArray ts) (toUArray us) (toUArray vs) (toUArray ws) (toUArray xs) (toUArray ys) (toUArray zs)+                        ++-- | Zip eight arrays, yielding a new array.+scalar_zipWith8+        :: (Scalar a, Scalar b, Scalar c, Scalar d, Scalar e, Scalar f, Scalar g, Scalar h, Scalar i)+        => (a -> b -> c -> d -> e -> f -> g -> h -> i) +        -> PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray  f-> PArray g -> PArray h -> PArray i++{-# INLINE_PA scalar_zipWith8 #-}+scalar_zipWith8 f ss ts us vs ws xs ys zs +        = fromUArray' (prim_lengthPA ss)+        $ U.zipWith8 f (toUArray ss)  (toUArray ts) (toUArray us) (toUArray vs) (toUArray ws) (toUArray xs) (toUArray ys) (toUArray zs)+                         -- | Left fold over an array. scalar_fold          :: Scalar a
Data/Array/Parallel/Lifted/TH/Repr.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TemplateHaskell, Rank2Types #-}+{-# LANGUAGE TemplateHaskell, RankNTypes #-} module Data.Array.Parallel.Lifted.TH.Repr (   scalarInstances, tupleInstances,   voidPRInstance, unitPRInstance, wrapPRInstance@@ -46,7 +46,7 @@   inlineD :: Name -> DecQ-inlineD name = pragInlD name (inlineSpecNoPhase True False)+inlineD name = pragInlD name Inline FunLike AllPhases   instance_PData :: TypeQ -> [Name] -> Name -> [TypeQ] -> DecQ
Data/Array/Parallel/PArray/PDataInstances.hs view
@@ -10,8 +10,9 @@   punit,    -- * Operators on arrays of tuples-  zipPA#,  unzipPA#, zip3PA#, unzip3PA#,-  zip4PA#, zip5PA#, +  zipPA#,  unzipPA#, zip3PA#, unzip3PA#, +  zip4PA#, unzip4PA#, zip5PA#, unzip5PA#, zip6PA#, unzip6PA#, +  zip7PA#, unzip7PA#, zip8PA#, unzip8PA#,       -- * Operators on nested arrays   segdPA#, concatPA#, segmentPA#, copySegdPA#@@ -281,10 +282,53 @@ zip4PA# (PArray n# xs) (PArray _ ys) (PArray _ zs) (PArray _ as)   = PArray n# (P_4 xs ys zs as) +unzip4PA# :: PArray (a, b, c, d) -> (PArray a, PArray b, PArray c, PArray d)+{-# INLINE_PA unzip4PA# #-}+unzip4PA# (PArray n# (P_4 ws xs ys zs))+   = (PArray n# ws, PArray n# xs, PArray n# ys, PArray n# zs)+ zip5PA# :: PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray (a, b, c, d, e) {-# INLINE_PA zip5PA# #-} zip5PA# (PArray n# xs) (PArray _ ys) (PArray _ zs) (PArray _ as) (PArray _ bs)   = PArray n# (P_5 xs ys zs as bs)++unzip5PA# :: PArray (a, b, c, d, e) -> (PArray a, PArray b, PArray c, PArray d, PArray e)+{-# INLINE_PA unzip5PA# #-}+unzip5PA# (PArray n# (P_5 vs ws xs ys zs))+  = (PArray n# vs, PArray n# ws, PArray n# xs, PArray n# ys, PArray n# zs)++zip6PA# :: PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray f -> PArray (a, b, c, d, e, f)+{-# INLINE_PA zip6PA# #-}+zip6PA# (PArray n# xs) (PArray _ ys) (PArray _ zs) (PArray _ as) (PArray _ bs) (PArray _ cs)+  = PArray n# (P_6 xs ys zs as bs cs)++unzip6PA# :: PArray (a, b, c, d, e, f) -> (PArray a, PArray b, PArray c, PArray d, PArray e, PArray f)+{-# INLINE_PA unzip6PA# #-}+unzip6PA# (PArray n# (P_6 us vs ws xs ys zs))+  = (PArray n# us, PArray n# vs, PArray n# ws, PArray n# xs, PArray n# ys, PArray n# zs)+++zip7PA# :: PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray f -> PArray g ->+  PArray (a, b, c, d, e, f, g)+{-# INLINE_PA zip7PA# #-}+zip7PA# (PArray n# xs) (PArray _ ys) (PArray _ zs) (PArray _ as) (PArray _ bs) (PArray _ cs) (PArray _ ds)+  = PArray n# (P_7 xs ys zs as bs cs ds)++unzip7PA# :: PArray (a, b, c, d, e, f, g) -> (PArray a, PArray b, PArray c, PArray d, PArray e, PArray f, PArray g)+{-# INLINE_PA unzip7PA# #-}+unzip7PA# (PArray n# (P_7 ts us vs ws xs ys zs))+  = (PArray n# ts, PArray n# us, PArray n# vs, PArray n# ws, PArray n# xs, PArray n# ys, PArray n# zs)++zip8PA# :: PArray a -> PArray b -> PArray c -> PArray d -> PArray e -> PArray f -> PArray g -> PArray h ->+  PArray (a, b, c, d, e, f, g, h)+{-# INLINE_PA zip8PA# #-}+zip8PA# (PArray n# xs) (PArray _ ys) (PArray _ zs) (PArray _ as) (PArray _ bs) (PArray _ cs) (PArray _ ds) (PArray _ es)+  = PArray n# (P_8 xs ys zs as bs cs ds es)++unzip8PA# :: PArray (a, b, c, d, e, f, g, h) -> (PArray a, PArray b, PArray c, PArray d, PArray e, PArray f, PArray g, PArray h)+{-# INLINE_PA unzip8PA# #-}+unzip8PA# (PArray n# (P_8 ss ts us vs ws xs ys zs))+  = (PArray n# ss, PArray n# ts, PArray n# us, PArray n# vs, PArray n# ws, PArray n# xs, PArray n# ys, PArray n# zs)   -- Sums -----------------------------------------------------------------------
Data/Array/Parallel/Prim.hs view
@@ -17,11 +17,13 @@   PData, PDatas(..), PRepr, PA(..), PR(..),   replicatePD, emptyPD, packByTagPD, combine2PD,   Scalar(..),-  scalar_map, scalar_zipWith, scalar_zipWith3,+  scalar_map, scalar_zipWith, scalar_zipWith3, scalar_zipWith4, scalar_zipWith5, scalar_zipWith6,+  scalar_zipWith7, scalar_zipWith8,   Void, Sum2(..), Sum3(..), Wrap(..),   void, fromVoid, pvoid, pvoids#, punit,   (:->)(..), -  closure, liftedClosure, ($:), liftedApply, closure1, closure2, closure3,+  closure, liftedClosure, ($:), liftedApply, closure1, closure2, closure3, closure4, +  closure5, closure6, closure7, closure8,   Sel2,  replicateSel2#, tagsSel2, elementsSel2_0#, elementsSel2_1#,   Sels2, lengthSels2#,   replicatePA_Int#, replicatePA_Double#,@@ -45,14 +47,16 @@ import Data.Array.Parallel.PArray.PData           (PData, PDatas, PR(..)) import Data.Array.Parallel.PArray.PDataInstances  (pvoid, punit, Sels2) import Data.Array.Parallel.Lifted.Closure         ((:->)(..), closure, liftedClosure, ($:),-                                                   liftedApply, closure1, closure2, closure3)+                                                   liftedApply, closure1, closure2, closure3, closure4, +												   closure5, closure6, closure7, closure8) import Data.Array.Parallel.Lifted.Unboxed         (Sel2, replicateSel2#, tagsSel2, elementsSel2_0#,                                                    elementsSel2_1#,                                                    replicatePA_Int#, replicatePA_Double#,                                                    emptyPA_Int#, emptyPA_Double#,                                                    {- packByTagPA_Int#, packByTagPA_Double# -}                                                    combine2PA_Int#, combine2PA_Double#)-import Data.Array.Parallel.Lifted.Scalar          (scalar_map, scalar_zipWith, scalar_zipWith3)+import Data.Array.Parallel.Lifted.Scalar          (scalar_map, scalar_zipWith, scalar_zipWith3, scalar_zipWith4,+                                                   scalar_zipWith5, scalar_zipWith6, scalar_zipWith7, scalar_zipWith8) import Data.Array.Parallel.Prelude.Tuple          (tup2, tup3, tup4) import GHC.Exts 
dph-lifted-copy.cabal view
@@ -1,5 +1,5 @@ Name:           dph-lifted-copy-Version:        0.6.1.1+Version:        0.7.0.1 License:        BSD3 License-File:   LICENSE Author:         The DPH Team@@ -64,11 +64,11 @@         -fno-warn-missing-signatures    Build-Depends:  -        base             == 4.5.*,+        base             == 4.6.*,         ghc              == 7.*,         array            == 0.4.*,         random           == 1.0.*,-        template-haskell == 2.7.*,-        vector           == 0.9.*,-        dph-base         == 0.6.1.*,-        dph-prim-par     == 0.6.1.*+        template-haskell == 2.8.*,+        dph-base         == 0.7.*,+        dph-prim-par     == 0.7.*,+        vector           == 0.10.*