{-# LANGUAGE ScopedTypeVariables #-} module Data.Array.Dynamic.MatMul(matMul) where import GHC.Stack import Data.Array.Convert import Data.Array.Dynamic import qualified Data.Array.DynamicS.MatMul as S import Numeric.LinearAlgebra as N matMul :: forall a . (HasCallStack, N.Numeric a) => Array a -> Array a -> Array a matMul :: Array a -> Array a -> Array a matMul Array a x Array a y = Array a -> Array a forall a b. Convert a b => a -> b convert (Array a -> Array a) -> Array a -> Array a forall a b. (a -> b) -> a -> b $ Array a -> Array a -> Array a forall a. (HasCallStack, Numeric a) => Array a -> Array a -> Array a S.matMul (Array a -> Array a forall a b. Convert a b => a -> b convert Array a x) (Array a -> Array a forall a b. Convert a b => a -> b convert Array a y)