"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "check/exam_paranoia.cpp" between
ginac-1.7.11.tar.bz2 and ginac-1.8.0.tar.bz2

About: GiNaC (GiNaC is Not a CAS (Computer Algebra System)) is a C++ library for symbolic calculations.

exam_paranoia.cpp  (ginac-1.7.11.tar.bz2):exam_paranoia.cpp  (ginac-1.8.0.tar.bz2)
skipping to change at line 591 skipping to change at line 591
v2.push_back(expair(1,-1)); v2.push_back(expair(1,-1));
ex e2 = mul(v2); // Should be e==x; ex e2 = mul(v2); // Should be e==x;
if (!e2.is_equal(x)) { if (!e2.is_equal(x)) {
clog << "Failure constructing " << e2 << " from mul.\n"; clog << "Failure constructing " << e2 << " from mul.\n";
++result; ++result;
} }
return result; return result;
} }
// Bug in sqrfree_yun (fixed 2016-02-02).
static unsigned exam_paranoia24()
{
unsigned result = 0;
symbol x("x");
ex e;
e = (x-1)*(x+1) - x*x + 1; // an unexpanded 0...
try {
ex f = sqrfree(e);
if (!f.is_zero()) {
clog << "sqrfree(" << e << ") returns " << f << " instead
of 0\n";
++result;
}
} catch (const exception &err) {
clog << "sqrfree(" << e << ") throws " << err.what() << endl;
++result;
}
e = pow(x-1,3) - expand(pow(x-1,3)); // ...still after differentiating..
.
try {
ex f = sqrfree(e);
if (!f.is_zero()) {
clog << "sqrfree(" << e << ") returns " << f << " instead
of 0\n";
++result;
}
} catch (const exception &err) {
clog << "sqrfree(" << e << ") throws " << err.what() << endl;
++result;
}
e = pow(x-1,4) - expand(pow(x-1,4)); // ...and after differentiating twi
ce.
try {
ex f = sqrfree(e);
if (!f.is_zero()) {
clog << "sqrfree(" << e << ") returns " << f << " instead
of 0\n";
++result;
}
} catch (const exception &err) {
clog << "sqrfree(" << e << ") throws " << err.what() << endl;
++result;
}
return result;
}
// Bug in add ctor // Bug in add ctor
unsigned exam_paranoia25() unsigned exam_paranoia24()
{ {
symbol a("a"), b("b"), c("c"); symbol a("a"), b("b"), c("c");
ex e = -a + 2*b + c; ex e = -a + 2*b + c;
if (e.diff(c).nops() > 1) { if (e.diff(c).nops() > 1) {
clog << "diff(" << e << ",c) was not fully evaluated.\n"; clog << "diff(" << e << ",c) was not fully evaluated.\n";
return 1; return 1;
} }
return 0; return 0;
} }
// Bug in partial fraction expansion // Bug in partial fraction expansion
unsigned exam_paranoia26() unsigned exam_paranoia25()
{ {
symbol x("x"); symbol x("x");
ex ex1=pow(x,4)/(x-1)/4; ex ex1=pow(x,4)/(x-1)/4;
ex ex2=sqrfree_parfrac(ex1,x); ex ex2=sqrfree_parfrac(ex1,x);
ex e = (ex1-ex2).normal(); ex e = (ex1-ex2).normal();
if (! e.is_zero()) { if (! e.is_zero()) {
clog << "partial fraction expansion of " << ex1 << " produces err or.\n"; clog << "partial fraction expansion of " << ex1 << " produces err or.\n";
return 1; return 1;
} }
return 0; return 0;
} }
// Bug in power expansion // Bug in power expansion
unsigned exam_paranoia27() unsigned exam_paranoia26()
{ {
unsigned result = 0; unsigned result = 0;
symbol x("x"), y("y"), a("a"); symbol x("x"), y("y"), a("a");
possymbol s("s"), t("t"); possymbol s("s"), t("t");
exmap pwrs = exmap pwrs =
{ {pow((x+1)*(y-2)*(s-3)*(t+4), a), pow((x+1)*(y-2)*(s-3), a)*pow(t+4, a)}, { {pow((x+1)*(y-2)*(s-3)*(t+4), a), pow((x+1)*(y-2)*(s-3), a)*pow(t+4, a)},
{pow(2*(x+1)*(y-2)*(s-3)*(t+4), a), pow(2,a)*pow((x+1)*(y-2)*(s-3), a )*pow(t+4, a)}, {pow(2*(x+1)*(y-2)*(s-3)*(t+4), a), pow(2,a)*pow((x+1)*(y-2)*(s-3), a )*pow(t+4, a)},
{pow(-(x+1)*(y-2)*(s-3)*(t+4), a), pow(-(x+1)*(y-2)*(s-3), a)*pow(t+4 , a)}, {pow(-(x+1)*(y-2)*(s-3)*(t+4), a), pow(-(x+1)*(y-2)*(s-3), a)*pow(t+4 , a)},
{pow(-2*(x+1)*(y-2)*(s-3)*(t+4), a), pow(2,a)*pow(-(x+1)*(y-2)*(s-3), a)*pow(t+4, a)} }; {pow(-2*(x+1)*(y-2)*(s-3)*(t+4), a), pow(2,a)*pow(-(x+1)*(y-2)*(s-3), a)*pow(t+4, a)} };
skipping to change at line 721 skipping to change at line 675
result += exam_paranoia19(); cout << '.' << flush; result += exam_paranoia19(); cout << '.' << flush;
result += exam_paranoia20(); cout << '.' << flush; result += exam_paranoia20(); cout << '.' << flush;
result += exam_mul_info(); cout << '.' << flush; result += exam_mul_info(); cout << '.' << flush;
result += is_polynomial_false_positive(); cout << '.' << flush; result += is_polynomial_false_positive(); cout << '.' << flush;
result += exam_paranoia21(); cout << '.' << flush; result += exam_paranoia21(); cout << '.' << flush;
result += exam_paranoia22(); cout << '.' << flush; result += exam_paranoia22(); cout << '.' << flush;
result += exam_paranoia23(); cout << '.' << flush; result += exam_paranoia23(); cout << '.' << flush;
result += exam_paranoia24(); cout << '.' << flush; result += exam_paranoia24(); cout << '.' << flush;
result += exam_paranoia25(); cout << '.' << flush; result += exam_paranoia25(); cout << '.' << flush;
result += exam_paranoia26(); cout << '.' << flush; result += exam_paranoia26(); cout << '.' << flush;
result += exam_paranoia27(); cout << '.' << flush;
return result; return result;
} }
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
return exam_paranoia(); return exam_paranoia();
} }
 End of changes. 5 change blocks. 
55 lines changed or deleted 3 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)