module DotProd
where

import Data.Array.Parallel.Unlifted

test :: UArr Float -> UArr Float -> Float
test v w =   loopAcc
           . loopU (\a (x:*:y) -> (a + x * y :*: (Nothing::Maybe ()))) 0
	   $ zipU v w


{- Inner loop:

      poly_$wtrans_s15C :: forall s1_aZb.
			   GHC.Prim.Int#
			   -> GHC.Base.Int
			   -> GHC.Prim.Float#
			   -> GHC.Prim.State# s1_aZb
			   -> (# GHC.Prim.State# s1_aZb, (GHC.Float.Float, GHC.Base.Int) #)
      [Arity 4]
      poly_$wtrans_s15C =
	\ (@ s1_X10d)
	  (ww_X164 :: GHC.Prim.Int#)
	  (w1_X167 :: GHC.Base.Int)
	  (ww1_X16b :: GHC.Prim.Float#)
	  (w2_X16e :: GHC.Prim.State# s1_X10d) ->
	  case GHC.Prim.==# ww_X164 wild2_B1 of wild4_XVx {
	    GHC.Base.False ->
	      poly_$wtrans_s15C
		@ s1_X10d
		(GHC.Prim.+# ww_X164 1)
		w1_X167
		(GHC.Prim.plusFloat#
		   ww1_X16b
		   (GHC.Prim.timesFloat#
		      (GHC.Prim.indexFloatArray# rb2_aXC (GHC.Prim.+# rb_aXx ww_X164))
		      (GHC.Prim.indexFloatArray# rb21_X11Y (GHC.Prim.+# rb11_X11T ww_X164))))
		w2_X16e;
	    GHC.Base.True ->
	      case w1_X167 of tpl_aZj { GHC.Base.I# a1_aZk ->
	      (# w2_X16e, ((GHC.Float.F# ww1_X16b), tpl_aZj) #)
	      }
	  };
    } in 

-}
