From f72d854643c84de958905e21b1ac65b1f6ae141c Mon Sep 17 00:00:00 2001
From: "Vladimir V. Kisil" <kisilv@maths.leeds.ac.uk>
Date: Fri, 6 Sep 2013 13:39:55 +0100
Subject: [PATCH 8/9] Additional mul::info patch.

Signed-off-by: Vladimir V. Kisil <kisilv@maths.leeds.ac.uk>
---
 ginac/mul.cpp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/ginac/mul.cpp b/ginac/mul.cpp
index 3ec279d..37055ac 100644
--- a/ginac/mul.cpp
+++ b/ginac/mul.cpp
@@ -311,6 +311,8 @@ bool mul::info(unsigned inf) const
 				return true;
 			else if ((inf==info_flags::negative) && (flags & status_flags::is_negative))
 				return true;
+			if (flags & status_flags::purely_indefinite)
+				return false;
 
 			bool pos = true;
 			epvector::const_iterator i = seq.begin(), end = seq.end();
@@ -382,7 +384,16 @@ bool mul::info(unsigned inf) const
 			return pos; 
 		}
 		case info_flags::indefinite: {
-			return (flags & status_flags::purely_indefinite);
+			if (flags & status_flags::purely_indefinite)
+				return true;
+			epvector::const_iterator i = seq.begin(), end = seq.end();
+			while (i != end) {
+				if (recombine_pair_to_ex(*i).info(info_flags::positive) || recombine_pair_to_ex(*i).info(info_flags::negative))
+					return false;
+				++i;
+			}
+			setflag(status_flags::purely_indefinite);
+			return true;
 		}
 	}
 	return inherited::info(inf);
-- 
1.8.4.rc3

