{-# LANGUAGE PArr #-} {-# OPTIONS -fvectorise #-} module DotPVect where import Data.Array.Parallel.Prelude import Data.Array.Parallel.Prelude.Double import qualified Prelude dotp :: PArray Double -> PArray Double -> Double {-# NOINLINE dotp #-} dotp v w = dotp' (fromPArrayP v) (fromPArrayP w) dotp' :: [:Double:] -> [:Double:] -> Double dotp' v w = sumP (zipWithP (*) v w)