]> git.unchartedbackwaters.co.uk Git - francis/lta.git/commitdiff
Make extractMultiplier handle single-term Sum.
authorFrancis Russell <francis@unchartedbackwaters.co.uk>
Fri, 12 Apr 2013 15:59:34 +0000 (16:59 +0100)
committerFrancis Russell <francis@unchartedbackwaters.co.uk>
Fri, 12 Apr 2013 15:59:34 +0000 (16:59 +0100)
LTA/Symbolic.hs

index f29070fa6f7dd504c34414437f4046e112d1857f..3472fcba9f78b700e58feede7e3e332c33d2bd5f 100644 (file)
@@ -136,7 +136,10 @@ extractMultiplier (Literal literal) = (1, literal)
 extractMultiplier (Product pairSeq) = (expr, coeff) where
   expr = rebuild $ (PairSeq 1 pairSeq' :: PairSeq ProductTag Expr)
   (PairSeq coeff pairSeq') = normalise pairSeq
-extractMultiplier (Sum pairSeq) = (rebuild $ normalise pairSeq, 1)
+extractMultiplier (Sum (PairSeq coeff terms)) =
+  case (coeff, Map.toList terms) of
+    (0, [(a, b)]) -> (a, b)
+    _ -> (rebuild $ normalise (PairSeq coeff terms :: PairSeq SumTag Literal), 1)
 extractMultiplier e = (e, 1)
 
 pow :: Expr -> Expr -> Expr