X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;ds=sidebyside;f=src%2FLinear%2FMatrix.hs;h=a06151db14262838394f473f83841f4766c62266;hb=1d0eef94c31c60a51b1340fb8e65a2173f0f69f6;hp=8006bdea1c2ee624930aa674e980635246c81d5a;hpb=6892f38cf4dab275a91fbe06bfb8efe229518336;p=numerical-analysis.git diff --git a/src/Linear/Matrix.hs b/src/Linear/Matrix.hs index 8006bde..a06151d 100644 --- a/src/Linear/Matrix.hs +++ b/src/Linear/Matrix.hs @@ -40,7 +40,7 @@ import qualified Data.Vector.Fixed as V ( zipWith ) import Data.Vector.Fixed.Cont ( Arity, arity ) import Linear.Vector ( Vec, delete ) -import Naturals ( N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, S, Z ) +import Naturals import Normed ( Normed(..) ) import NumericPrelude hiding ( (*), abs ) @@ -67,6 +67,8 @@ type Mat2 a = Mat N2 N2 a type Mat3 a = Mat N3 N3 a type Mat4 a = Mat N4 N4 a type Mat5 a = Mat N5 N5 a +type Mat6 a = Mat N6 N6 a +type Mat7 a = Mat N7 N7 a -- * Type synonyms for 1-by-n row "vectors". @@ -93,7 +95,29 @@ 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. +type Col10 a = Col N10 a +type Col11 a = Col N11 a +type Col12 a = Col N12 a +type Col13 a = Col N13 a +type Col14 a = Col N14 a +type Col15 a = Col N15 a +type Col16 a = Col N16 a +type Col17 a = Col N17 a +type Col18 a = Col N18 a +type Col19 a = Col N19 a +type Col20 a = Col N20 a +type Col21 a = Col N21 a +type Col22 a = Col N22 a +type Col23 a = Col N23 a +type Col24 a = Col N24 a +type Col25 a = Col N25 a +type Col26 a = Col N26 a +type Col27 a = Col N27 a +type Col28 a = Col N28 a +type Col29 a = Col N29 a +type Col30 a = Col N30 a +type Col31 a = Col N31 a +type Col32 a = Col N32 a instance (Eq a) => Eq (Mat m n a) where @@ -109,8 +133,8 @@ instance (Eq a) => Eq (Mat m n a) where -- >>> m1 == m3 -- False -- - (Mat rows1) == (Mat rows2) = - V.and $ V.zipWith comp rows1 rows2 + (Mat rows_one) == (Mat rows_two) = + V.and $ V.zipWith comp rows_one rows_two where -- Compare a row, one column at a time. comp row1 row2 = V.and (V.zipWith (==) row1 row2) @@ -557,11 +581,11 @@ infixl 7 * instance (Ring.C a, Arity m, Arity n) => Additive.C (Mat m n a) where - (Mat rows1) + (Mat rows2) = - Mat $ V.zipWith (V.zipWith (+)) rows1 rows2 + (Mat rows_one) + (Mat rows_two) = + Mat $ V.zipWith (V.zipWith (+)) rows_one rows_two - (Mat rows1) - (Mat rows2) = - Mat $ V.zipWith (V.zipWith (-)) rows1 rows2 + (Mat rows_one) - (Mat rows_two) = + Mat $ V.zipWith (V.zipWith (-)) rows_one rows_two zero = Mat (V.replicate $ V.replicate (fromInteger 0))