X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=check%2Fdifferentiation.cpp;h=ece8bc376eb4ce9d70bb952d8afe2c517b218e57;hp=3d49062b82b79b5784d274fe8c288f953aff2581;hb=955cb185a85535ab328ffedbfccdc508ce80fa91;hpb=b6c2d6d1d51ec546d2e7b69dbf79574998fa1d3f diff --git a/check/differentiation.cpp b/check/differentiation.cpp index 3d49062b..ece8bc37 100644 --- a/check/differentiation.cpp +++ b/check/differentiation.cpp @@ -21,13 +21,16 @@ */ #include + +#ifndef NO_GINAC_NAMESPACE using namespace GiNaC; +#endif // ndef NO_GINAC_NAMESPACE static unsigned check_diff(const ex &e, const symbol &x, const ex &d, unsigned nth=1) { ex ed = e.diff(x, nth); - if ((ed - d).compare(exZERO()) != 0) { + if ((ed - d).compare(ex(0)) != 0) { switch (nth) { case 0: clog << "zeroth "; @@ -164,6 +167,7 @@ static unsigned differentiation3(void) ex e1, e2, e, d; // construct expression e to be diff'ed: + e1 = y*pow(x, 2) + a*x + b; e2 = exp(e1); e = b*pow(e2, 2) + y*e2 + a; @@ -191,6 +195,7 @@ static unsigned differentiation4(void) ex e1, e2, e, d; // construct expression e to be diff'ed: + e1 = y*pow(x, 2) + a*x + b; e2 = log(e1); e = b*pow(e2, 2) + y*e2 + a; @@ -232,10 +237,16 @@ static unsigned differentiation5(void) pow(y*b+pow(y,2)*x+a,-2)*pow(y,2))* pow(1+pow(a*x+b+y*pow(x,2),2)*pow(y*b+pow(y,2)*x+a,-2),-1); */ + /* d = pow(1+pow(a*x+b+y*pow(x,2),2)*pow(y*b+pow(y,2)*x+a,-2),-1) *pow(y*b+pow(y,2)*x+a,-1)*(a+2*y*x) +pow(y,2)*(-a*x-b-y*pow(x,2))* pow(pow(y*b+pow(y,2)*x+a,2)+pow(a*x+b+y*pow(x,2),2),-1); + */ + d = pow(y,2)*pow(pow(b+y*pow(x,2)+x*a,2)+pow(y*b+pow(y,2)*x+a,2),-1)* + (-b-y*pow(x,2)-x*a)+ + pow(pow(b+y*pow(x,2)+x*a,2)+pow(y*b+pow(y,2)*x+a,2),-1)* + (y*b+pow(y,2)*x+a)*(2*y*x+a); result += check_diff(e, x, d); return result; @@ -247,13 +258,13 @@ static unsigned differentiation6(void) symbol x("x"); ex e, d, ed; - e = sin(x).series(x, exZERO(), 8); - d = cos(x).series(x, exZERO(), 7); + e = sin(x).series(x, 0, 8); + d = cos(x).series(x, 0, 7); ed = e.diff(x); ed = static_cast(ed.bp)->convert_to_poly(); d = static_cast(d.bp)->convert_to_poly(); - if ((ed - d).compare(exZERO()) != 0) { + if ((ed - d).compare(ex(0)) != 0) { clog << "derivative of " << e << " by " << x << " returned " << ed << " instead of " << d << ")" << endl; return 1;