"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "check/exam_misc.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_misc.cpp  (ginac-1.7.11.tar.bz2):exam_misc.cpp  (ginac-1.8.0.tar.bz2)
skipping to change at line 92 skipping to change at line 92
if (e != 1) { if (e != 1) {
clog << "e = pow(x,pow(a+b,2)-pow(a,2)-pow(b,2)-a*b*2).expand(); erroneously returned " clog << "e = pow(x,pow(a+b,2)-pow(a,2)-pow(b,2)-a*b*2).expand(); erroneously returned "
<< e << " instead of simplifying to 1." << endl; << e << " instead of simplifying to 1." << endl;
++result; ++result;
} }
return result; return result;
} }
static unsigned exam_sqrfree()
{
unsigned result = 0;
symbol x("x"), y("y");
ex e1, e2;
e1 = (1+x)*pow((2+x),2)*pow((3+x),3)*pow((4+x),4);
e2 = sqrfree(expand(e1),lst{x});
if (e1 != e2) {
clog << "sqrfree(expand(" << e1 << ")) erroneously returned "
<< e2 << endl;
++result;
}
e1 = (x+y)*pow((x+2*y),2)*pow((x+3*y),3)*pow((x+4*y),4);
e2 = sqrfree(expand(e1));
if (e1 != e2) {
clog << "sqrfree(expand(" << e1 << ")) erroneously returned "
<< e2 << endl;
++result;
}
e2 = sqrfree(expand(e1),lst{x});
if (e1 != e2) {
clog << "sqrfree(expand(" << e1 << "),[x]) erroneously returned "
<< e2 << endl;
++result;
}
e2 = sqrfree(expand(e1),lst{y});
if (e1 != e2) {
clog << "sqrfree(expand(" << e1 << "),[y]) erroneously returned "
<< e2 << endl;
++result;
}
e2 = sqrfree(expand(e1),lst{x,y});
if (e1 != e2) {
clog << "sqrfree(expand(" << e1 << "),[x,y]) erroneously returned
"
<< e2 << endl;
++result;
}
return result;
}
/* Arithmetic Operators should behave just as one expects from built-in types. /* Arithmetic Operators should behave just as one expects from built-in types.
* When somebody screws up the operators this routine will most probably fail * When somebody screws up the operators this routine will most probably fail
* to compile. Unfortunately we can only test the stuff that is allowed, not * to compile. Unfortunately we can only test the stuff that is allowed, not
* what is forbidden (e.g. e1+e2 = 42) since that must not compile. :-( */ * what is forbidden (e.g. e1+e2 = 42) since that must not compile. :-( */
static unsigned exam_operator_semantics() static unsigned exam_operator_semantics()
{ {
unsigned result = 0; unsigned result = 0;
ex e1, e2; ex e1, e2;
int i1, i2; int i1, i2;
skipping to change at line 301 skipping to change at line 258
} }
if (e.has(y*y, has_options::algebraic)) if (e.has(y*y, has_options::algebraic))
{ clog << "(x^3*y).has(y*y, has_options::algebraic) erroneously ret urned true." << endl; { clog << "(x^3*y).has(y*y, has_options::algebraic) erroneously ret urned true." << endl;
++result; ++result;
} }
return result; return result;
} }
/* Test suitable cases of the exponent power law: (e^t)^s=e^(ts). */
static unsigned exam_exponent_power_law()
{
unsigned result = 0;
symbol x("x");
realsymbol s("s");
possymbol t("t");
exmap pwr_exp =
{ {pow(exp(x), 2), exp(2*x)},
{pow(exp(s), t), exp(s*t)},
{exp(x)*pow(exp(x),-1), 1} };
for (auto e : pwr_exp) {
if (! (e.first.is_equal(e.second)) ) {
clog << "power of exponent " << e.first << " produces er
ror.\n";
++result;
}
}
return result;
}
unsigned exam_misc() unsigned exam_misc()
{ {
unsigned result = 0; unsigned result = 0;
cout << "examining miscellaneous other things" << flush; cout << "examining miscellaneous other things" << flush;
result += exam_expand_subs(); cout << '.' << flush; result += exam_expand_subs(); cout << '.' << flush;
result += exam_expand_subs2(); cout << '.' << flush; result += exam_expand_subs2(); cout << '.' << flush;
result += exam_expand_power(); cout << '.' << flush; result += exam_expand_power(); cout << '.' << flush;
result += exam_sqrfree(); cout << '.' << flush;
result += exam_operator_semantics(); cout << '.' << flush; result += exam_operator_semantics(); cout << '.' << flush;
result += exam_subs(); cout << '.' << flush; result += exam_subs(); cout << '.' << flush;
result += exam_joris(); cout << '.' << flush; result += exam_joris(); cout << '.' << flush;
result += exam_subs_algebraic(); cout << '.' << flush; result += exam_subs_algebraic(); cout << '.' << flush;
result += exam_exponent_power_law(); cout << '.' << flush;
return result; return result;
} }
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
return exam_misc(); return exam_misc();
} }
 End of changes. 4 change blocks. 
45 lines changed or deleted 25 lines changed or added

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