* these oopses for good, so we run those stupid tests... */
/*
- * GiNaC Copyright (C) 1999-2003 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2004 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
static unsigned exam_paranoia16()
{
unsigned result = 0;
- symbol a("a"), b("b"), c("c"), d("d");
+ symbol a("a"), b("b"), c("c"), d("d"), e("e");
ex e1, e2, e3;
e1 = pow(1+a*sqrt(b+c), 2);
++result;
}
+ e1 = pow(sqrt(a+b)+sqrt(c+d), 3);
+ e2 = e1.expand();
+
+ if (e2.has(3*(a+b)*sqrt(c+d)) || e2.has(3*(c+d)*sqrt(a+b))) {
+ clog << "expand(" << e1 << ") didn't fully expand\n";
+ ++result;
+ }
+
+ e1 = a*(b+c*(d+e));
+ e2 = e1.expand();
+
+ if (e2.has(c*(d+e))) {
+ clog << "expand(" << e1 << ") didn't fully expand\n";
+ ++result;
+ }
+
+ e1 = 2*pow(1+a, 2)/a;
+ e2 = e1.expand();
+
+ if (e2.has(pow(a, 2))) {
+ clog << "expand(" << e1 << ") didn't fully expand\n";
+ ++result;
+ }
+
+ e1 = a*(a+b);
+ e2 = pow(pow(e1, -1), -1);
+
+ if (e2.has(a*b)) {
+ clog << "double reciprocal expanded where it should not\n";
+ ++result;
+ }
+
return result;
}