From: Christian Bauer Date: Wed, 2 Aug 2000 19:37:13 +0000 (+0000) Subject: - added check for "normal(2-2*(1+a)/(-1-a))" bug X-Git-Tag: release_0-6-4~7 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=f52b6618c4fad4f017ca48622cb4be6dc6acb540 - added check for "normal(2-2*(1+a)/(-1-a))" bug --- diff --git a/check/exam_paranoia.cpp b/check/exam_paranoia.cpp index 7ad2cad9..b170f471 100644 --- a/check/exam_paranoia.cpp +++ b/check/exam_paranoia.cpp @@ -292,6 +292,25 @@ static unsigned exam_paranoia11(void) return result; } +// This one returned 0 because add::normal() incorrectly assumed that if the +// common denominator is 1, all the denominators would be 1 (they can in fact +// be +/-1). Fixed on Aug 2nd 2000. +static unsigned exam_paranoia12(void) +{ + unsigned result = 0; + symbol x("x"); + + ex e = 2-2*(1+x)/(-1-x); + ex f = e.normal(); + ex d = 4; + + if (!(f - d).expand().is_zero()) { + clog << "normal(" << e << ") returns " << f << " instead of " << d << endl; + ++result; + } + return result; +} + unsigned exam_paranoia(void) { unsigned result = 0; @@ -310,6 +329,7 @@ unsigned exam_paranoia(void) result += exam_paranoia9(); cout << '.' << flush; result += exam_paranoia10(); cout << '.' << flush; result += exam_paranoia11(); cout << '.' << flush; + result += exam_paranoia12(); cout << '.' << flush; if (!result) { cout << " passed " << endl;