module Multilinear.Generic (
module Multilinear.Generic.Sequential,
toMultiCore, toSequential
) where
import Data.Vector as Boxed
import Multilinear.Generic.Sequential
import qualified Multilinear.Generic.Sequential as Sequential
import qualified Multilinear.Generic.MultiCore as MultiCore
toMultiCore :: Sequential.Tensor a -> MultiCore.Tensor a
toMultiCore (Sequential.Scalar x) = MultiCore.Scalar x
toMultiCore (Sequential.SimpleFinite i ts) = MultiCore.SimpleFinite i ts
toMultiCore (Sequential.FiniteTensor i ts) = MultiCore.FiniteTensor i $ Boxed.map toMultiCore ts
toSequential :: MultiCore.Tensor a -> Sequential.Tensor a
toSequential (MultiCore.Scalar x) = Sequential.Scalar x
toSequential (MultiCore.SimpleFinite i ts) = Sequential.SimpleFinite i ts
toSequential (MultiCore.FiniteTensor i ts) = Sequential.FiniteTensor i $ Boxed.map toSequential ts