module Try.Misc.Determinant where

import Data.Matrix (Matrix, detLU, matrix)

m1 :: Matrix Double
m1 = matrix 3 3 (\(a, b) -> fromIntegral (a ^ b))

-- >>> m1
-- ┌                ┐
-- │  1.0  1.0  1.0 │
-- │  2.0  4.0  8.0 │
-- │  3.0  9.0 27.0 │
-- └                ┘

det :: Double
det = detLU m1

-- >>> det
-- 12.0