{-# LANGUAGE CPP #-}

#include "DPH_Header.h"

import Data.Array.Parallel.Unlifted.Parallel
import Data.Array.Parallel.Unlifted.Distributed ( DT )
import Data.Array.Parallel.Unlifted.Sequential
  hiding ((!:), (+:+), (>:), (^+:+^), toUSegd)
import qualified Data.Array.Parallel.Unlifted.Sequential
  as U

#include "DPH_Interface.h"

class (UA a, DT a) => Elt a
type Array = UArr
type SArray = SUArr
type Segd = USegd

length = lengthU
empty = emptyU
replicate = replicateUP
replicateEach = replicateEachU
repeat = repeatU
(!:) = (U.!:)
bpermute = bpermuteUP
(+:+) = (U.+:+)
pack = packUP
combine = combineU
map = mapUP
zip = zipU
unzip = unzipU
fsts = fstU
zip3 = zip3U
unzip3 = unzip3U
zipWith = zipWithUP
zipWith3 = zipWith3U
fold = foldUP
fold1 = fold1U
sum = sumUP
scan = scanUP
indexed = indexedU
enumFromTo = enumFromToUP
enumFromToEach = enumFromToEachU
randoms = randomU
randomRs = randomRU
concat = concatSU
(>:) = (U.>:)
(^+:+^) = (U.^+:+^)
length_s = lengthSU
lengths_s = lengthsSU
indices_s = indicesSU
fold_s = foldSUP
fold1_s = fold1SU
sum_s = sumSUP
indexed_s = indexedSUP
toSegd = U.toUSegd
toList = fromU
fromList = toU