* these oopses for good, so we run those stupid tests... */
/*
- * GiNaC Copyright (C) 1999-2014 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2015 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
return result;
}
+// Bug in power::expand reported by Isuru Fernando (fixed 2015-05-07).
+static unsigned exam_paranoia21()
+{
+ symbol x("x");
+ ex e = pow(x + sqrt(ex(2))*x, 2).expand();
+ if (e.nops() != 2) {
+ clog << "(x+sqrt(2)*x)^2 was wrongly expanded to " << e << "\n";
+ return 1;
+ }
+ return 0;
+}
+
+// Bug in power::expand (fixed 2015-07-18).
+static unsigned exam_paranoia22()
+{
+ symbol x("x"), y("y");
+ ex e = pow(sqrt(1+x)+y*sqrt(1+x), 2).expand();
+ if (e.nops() != 6) {
+ clog << "(sqrt(1+x)+y*sqrt(1+x))^2 was wrongly expanded to " << e << "\n";
+ return 1;
+ }
+ return 0;
+}
+
+// Bug in expairseq::evalchildren().
+static unsigned exam_paranoia23()
+{
+ unsigned result = 0;
+ symbol x("x");
+
+ epvector v1;
+ v1.push_back(expair(1, 1));
+ v1.push_back(expair(2*x, -1));
+ ex e1 = add(v1); // Should be e==1-2*x,
+ if (!e1.is_equal(1-2*x)) {
+ clog << "Failure constructing " << e1 << " from add.\n";
+ ++result;
+ }
+
+ epvector v2;
+ v2.push_back(expair(x, 1));
+ v2.push_back(expair(1,-1));
+ ex e2 = mul(v2); // Should be e==x;
+ if (!e2.is_equal(x)) {
+ clog << "Failure constructing " << e2 << " from mul.\n";
+ ++result;
+ }
+
+ return result;
+}
+
unsigned exam_paranoia()
{
unsigned result = 0;
result += exam_paranoia19(); cout << '.' << flush;
result += exam_paranoia20(); cout << '.' << flush;
result += is_polynomial_false_positive(); cout << '.' << flush;
+ result += exam_paranoia21(); cout << '.' << flush;
+ result += exam_paranoia22(); cout << '.' << flush;
+ result += exam_paranoia23(); cout << '.' << flush;
return result;
}