From d1f72d0a85b377149a217057779d98060c283692 Mon Sep 17 00:00:00 2001 From: Richard Kreckel Date: Fri, 4 Aug 2000 16:37:25 +0000 Subject: [PATCH] - Check the normal(c-(b*a-c*a)/(4-a)) bug. --- check/exam_paranoia.cpp | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/check/exam_paranoia.cpp b/check/exam_paranoia.cpp index b170f471..be9d4774 100644 --- a/check/exam_paranoia.cpp +++ b/check/exam_paranoia.cpp @@ -220,8 +220,8 @@ static unsigned exam_paranoia8(void) clog << "normal(-x/(x+1)) returns " << f << " instead of -x/(x+1)\n"; ++result; } - } catch (const exception &e) { - clog << "normal(-x/(x+1) throws " << e.what() << endl; + } catch (const exception &err) { + clog << "normal(-x/(x+1) throws " << err.what() << endl; ++result; } return result; @@ -265,8 +265,8 @@ static unsigned exam_paranoia10(void) clog << "2^(3/2) erroneously returned " << r << " instead of 2*sqrt(2)" << endl; ++result; } - } catch (const exception &e) { - clog << "2^(3/2) throws " << e.what() << endl; + } catch (const exception &err) { + clog << "2^(3/2) throws " << err.what() << endl; ++result; } return result; @@ -305,12 +305,37 @@ static unsigned exam_paranoia12(void) ex d = 4; if (!(f - d).expand().is_zero()) { - clog << "normal(" << e << ") returns " << f << " instead of " << d << endl; + clog << "normal(" << e << ") returns " << f + << " instead of " << d << endl; ++result; } return result; } +// This one called numeric(0).inverse() in heur_gcd(). +static unsigned exam_paranoia13(void) +{ + unsigned result = 0; + symbol a("a"), b("b"), c("c"); + + ex e = c - (b*a-c*a)/(4-a); + ex f; + ex d = (b*a-4*c)/(a-4); + try { + f = e.normal(); + if (!(f - d).expand().is_zero()) { + clog << "normal(" << e << ") returns " << f + << " instead of " << d << endl; + ++result; + } + } catch (const exception & err) { + clog << "normal(" << e << ") cought an exception: " + << err.what() << endl; + ++result; + } + return result; +} + unsigned exam_paranoia(void) { unsigned result = 0; @@ -330,6 +355,7 @@ unsigned exam_paranoia(void) result += exam_paranoia10(); cout << '.' << flush; result += exam_paranoia11(); cout << '.' << flush; result += exam_paranoia12(); cout << '.' << flush; + result += exam_paranoia13(); cout << '.' << flush; if (!result) { cout << " passed " << endl; -- 2.44.0