{-# LANGUAGE DataKinds #-} {-# LANGUAGE ScopedTypeVariables #-} module Data.Array.Shaped.MatMul(matMul) where import GHC.TypeLits import Data.Array.Convert import Data.Array.Shaped import qualified Data.Array.ShapedS.MatMul as S import Numeric.LinearAlgebra as N matMul :: forall m n o a . (N.Numeric a, KnownNat m, KnownNat n, KnownNat o) => Array [m, n] a -> Array [n, o] a -> Array [m, o] a matMul x y = convert $ S.matMul (convert x) (convert y)