

import Foreign
import Control.Monad
import System

import TheModule

main =
  do
  n <- return . read . head =<< getArgs
  a <- mallocArray n
  b <- mallocArray n
  c <- mallocArray n
  forM_ [0..n-1] $ \i -> pokeElemOff a i m4
  forM_ [0..n-1] $ \i -> pokeElemOff b i v4
  forM_ [0..n-1] $ \i ->
    peekElemOff a i >>= \ai ->
      peekElemOff b i >>= \bi ->
        pokeElemOff c i (multmv ai bi)
  peekElemOff c 0 >>= print

m4 = (1:.2:.3:.4:.()):.
     (5:.6:.7:.7:.()):.
     (9:.10:.11:.12:.()):.
     (13:.13:.15:.16:.()):.() :: Mat44 Double

v4 = 4:.3:.2:.1:.() :: Vec4 Double

