{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE StandaloneDeriving #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module MatMul.Tensor where import Control.DeepSeq import Data.Matrix.Static import Data.Tensor.Static import qualified Data.Matrix.Static as M $(M.genMatrixInstance 4 4 ''Float) instance NFData (Matrix 4 4 Float) where rnf (Tensor'4'4'Float {}) = () {-# INLINE rnf #-} mkMat :: [Float] -> Matrix 4 4 Float mkMat = unsafeFromList mult :: Matrix 4 4 Float -> Matrix 4 4 Float -> Matrix 4 4 Float mult = M.mult