import Data.Vector.Fixed (
(!),
- N1,
- N2,
- N3,
- N4,
- N5,
- S,
- Z,
generate,
mk1,
mk2,
zipWith )
import Data.Vector.Fixed.Cont ( Arity, arity )
import Linear.Vector ( Vec, delete, element_sum )
+import Naturals ( N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, S, Z )
import Normed ( Normed(..) )
import NumericPrelude hiding ( (*), abs )
type Col3 a = Col N3 a
type Col4 a = Col N4 a
type Col5 a = Col N5 a
-
--- We need a big column for Gaussian quadrature.
-type N10 = S (S (S (S (S N5))))
-type Col10 a = Col N10 a
+type Col6 a = Col N6 a
+type Col7 a = Col N7 a
+type Col8 a = Col N8 a
+type Col9 a = Col N9 a
+type Col10 a = Col N10 a -- We need a big column for Gaussian quadrature.
instance (Eq a) => Eq (Mat m n a) where
-- >>> is_upper_triangular r
-- True
--
--- >>> import Naturals ( N7 )
-- >>> let k1 = [6, -3, 0, 0, 0, 0, 0] :: [Double]
-- >>> let k2 = [-3, 10.5, -7.5, 0, 0, 0, 0] :: [Double]
-- >>> let k3 = [0, -7.5, 12.5, 0, 0, 0, 0] :: [Double]
vec5d :: (a,a,a,a,a) -> Col5 a
vec5d (v,w,x,y,z) = Mat (mk5 (mk1 v) (mk1 w) (mk1 x) (mk1 y) (mk1 z))
+
-- Since we commandeered multiplication, we need to create 1x1
-- matrices in order to multiply things.
scalar :: a -> Mat1 a