packages feed

multilinear-0.3.0.0: test/Spec.hs

{-|
Module      : Main
Description : Test of Multilinear library
Copyright   : (c) Artur M. Brodzki, 2018
License     : BSD3
Maintainer  : artur@brodzki.org
Stability   : experimental
Portability : Windows/POSIX

-}

module Main (
    main
) where

import           Control.DeepSeq
import           Multilinear.Generic
import           Multilinear.Class
import qualified Multilinear.Matrix as Matrix
import qualified Multilinear.Vector as Vector

v_i :: Tensor Double
v_i = Vector.fromIndices "i" 10 fromIntegral

v_j :: Tensor Double
v_j = Vector.fromIndices "j" 5 (\x -> fromIntegral x + 5.0)

v_k :: Tensor Double
v_k = Vector.fromIndices "k" 10 fromIntegral

m_ik :: Tensor Double
m_ik = Matrix.fromIndices "ik" 10 10 (\i j -> fromIntegral i + fromIntegral j)

main :: IO ()
main = do
    putStr "v^i = "
    print v_i
    putStr "v^j = "
    print v_j
    putStr "v^k = "
    print v_k
    putStr "Matrix m_ji = v^j + v_i = "
    let m = v_j + (v_i \/ "i")
    print m
    putStr "m_ji * v^i = "
    print $ m * v_i
    putStr "m_ji * v^k = "
    print $ m * v_k
    putStr "Matrix m_ik = "
    print m_ik
    putStr "m_ik * v^k = "
    print $ m_ik * v_k
    putStr "m_ik |>>> i = "
    print $ m_ik |>>> "i"
    putStr "m_ji * m_ik"
    print $ m * m_ik