-- >>> forward_substitute m b
-- ((1.0),(0.0))
--
+-- >>> let m = fromList [[4,0],[0,2]] :: Mat2 Double
+-- >>> let b = vec2d (2, 1.5 :: Double)
+-- >>> forward_substitute m b
+-- ((0.5),(0.75))
+--
forward_substitute :: forall a m. (Field.C a, Arity m)
=> Mat m m a
-> Mat m N1 a