X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;ds=inline;f=check%2Fexam_paranoia.cpp;h=4d04e92a8c6f53ee8ff46322019519f1a4720e48;hb=695f6ae955ec530cded8f21efd5569df39447f76;hp=1104ebe9ed3c9ffc47c4358e9e40ce0a823e9772;hpb=87d731b215909cc8ab8ecdb8c05fcd717bf63fd2;p=ginac.git diff --git a/check/exam_paranoia.cpp b/check/exam_paranoia.cpp index 1104ebe9..4d04e92a 100644 --- a/check/exam_paranoia.cpp +++ b/check/exam_paranoia.cpp @@ -6,7 +6,7 @@ * these oopses for good, so we run those stupid tests... */ /* - * GiNaC Copyright (C) 1999-2003 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2005 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 @@ -375,7 +375,7 @@ static unsigned exam_paranoia15() 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); @@ -402,6 +402,38 @@ static unsigned exam_paranoia16() ++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; }