- unsigned result = 0;
- ex e, d;
-
- e = sin(x);
- d = x - pow(x, 3) / 6 + pow(x, 5) / 120 - pow(x, 7) / 5040 + Order(pow(x, 8));
- result += check_series(e, 0, d);
-
- e = cos(x);
- d = 1 - pow(x, 2) / 2 + pow(x, 4) / 24 - pow(x, 6) / 720 + Order(pow(x, 8));
- result += check_series(e, 0, d);
-
- e = exp(x);
- d = 1 + x + pow(x, 2) / 2 + pow(x, 3) / 6 + pow(x, 4) / 24 + pow(x, 5) / 120 + pow(x, 6) / 720 + pow(x, 7) / 5040 + Order(pow(x, 8));
- result += check_series(e, 0, d);
-
- e = pow(1 - x, -1);
- d = 1 + x + pow(x, 2) + pow(x, 3) + pow(x, 4) + pow(x, 5) + pow(x, 6) + pow(x, 7) + Order(pow(x, 8));
- result += check_series(e, 0, d);
-
- e = x + pow(x, -1);
- d = x + pow(x, -1);
- result += check_series(e, 0, d);
-
- e = x + pow(x, -1);
- d = 2 + pow(x-1, 2) - pow(x-1, 3) + pow(x-1, 4) - pow(x-1, 5) + pow(x-1, 6) - pow(x-1, 7) + Order(pow(x-1, 8));
- result += check_series(e, 1, d);
-
- e = pow(x + pow(x, 3), -1);
- d = pow(x, -1) - x + pow(x, 3) - pow(x, 5) + Order(pow(x, 7));
- result += check_series(e, 0, d);
-
- e = pow(pow(x, 2) + pow(x, 4), -1);
- d = pow(x, -2) - 1 + pow(x, 2) - pow(x, 4) + Order(pow(x, 6));
- result += check_series(e, 0, d);
-
- e = pow(sin(x), -2);
- d = pow(x, -2) + numeric(1,3) + pow(x, 2) / 15 + pow(x, 4) * 2/189 + Order(pow(x, 5));
- result += check_series(e, 0, d);
-
- e = sin(x) / cos(x);
- d = x + pow(x, 3) / 3 + pow(x, 5) * 2/15 + pow(x, 7) * 17/315 + Order(pow(x, 8));
- result += check_series(e, 0, d);
-
- e = cos(x) / sin(x);
- d = pow(x, -1) - x / 3 - pow(x, 3) / 45 - pow(x, 5) * 2/945 + Order(pow(x, 6));
- result += check_series(e, 0, d);
-
- e = pow(numeric(2), x);
- ex t = log(ex(2)) * x;
- d = 1 + t + pow(t, 2) / 2 + pow(t, 3) / 6 + pow(t, 4) / 24 + pow(t, 5) / 120 + pow(t, 6) / 720 + pow(t, 7) / 5040 + Order(pow(x, 8));
- result += check_series(e, 0, d.expand());
-
- e = pow(Pi, x);
- t = log(Pi) * x;
- d = 1 + t + pow(t, 2) / 2 + pow(t, 3) / 6 + pow(t, 4) / 24 + pow(t, 5) / 120 + pow(t, 6) / 720 + pow(t, 7) / 5040 + Order(pow(x, 8));
- result += check_series(e, 0, d.expand());
-
- return result;
+ using GiNaC::log;
+
+ unsigned result = 0;
+ ex e, d;
+
+ e = sin(x);
+ d = x - pow(x, 3) / 6 + pow(x, 5) / 120 - pow(x, 7) / 5040 + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = cos(x);
+ d = 1 - pow(x, 2) / 2 + pow(x, 4) / 24 - pow(x, 6) / 720 + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = exp(x);
+ d = 1 + x + pow(x, 2) / 2 + pow(x, 3) / 6 + pow(x, 4) / 24 + pow(x, 5) / 120 + pow(x, 6) / 720 + pow(x, 7) / 5040 + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = pow(1 - x, -1);
+ d = 1 + x + pow(x, 2) + pow(x, 3) + pow(x, 4) + pow(x, 5) + pow(x, 6) + pow(x, 7) + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = x + pow(x, -1);
+ d = x + pow(x, -1);
+ result += check_series(e, 0, d);
+
+ e = x + pow(x, -1);
+ d = 2 + pow(x-1, 2) - pow(x-1, 3) + pow(x-1, 4) - pow(x-1, 5) + pow(x-1, 6) - pow(x-1, 7) + Order(pow(x-1, 8));
+ result += check_series(e, 1, d);
+
+ e = pow(x + pow(x, 3), -1);
+ d = pow(x, -1) - x + pow(x, 3) - pow(x, 5) + pow(x, 7) + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = pow(pow(x, 2) + pow(x, 4), -1);
+ d = pow(x, -2) - 1 + pow(x, 2) - pow(x, 4) + pow(x, 6) + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = pow(sin(x), -2);
+ d = pow(x, -2) + numeric(1,3) + pow(x, 2) / 15 + pow(x, 4) * 2/189 + pow(x, 6) / 675 + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = sin(x) / cos(x);
+ d = x + pow(x, 3) / 3 + pow(x, 5) * 2/15 + pow(x, 7) * 17/315 + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = cos(x) / sin(x);
+ d = pow(x, -1) - x / 3 - pow(x, 3) / 45 - pow(x, 5) * 2/945 - pow(x, 7) / 4725 + Order(pow(x, 8));
+ result += check_series(e, 0, d);
+
+ e = pow(numeric(2), x);
+ ex t = log(2) * x;
+ d = 1 + t + pow(t, 2) / 2 + pow(t, 3) / 6 + pow(t, 4) / 24 + pow(t, 5) / 120 + pow(t, 6) / 720 + pow(t, 7) / 5040 + Order(pow(x, 8));
+ result += check_series(e, 0, d.expand());
+
+ e = pow(Pi, x);
+ t = log(Pi) * x;
+ d = 1 + t + pow(t, 2) / 2 + pow(t, 3) / 6 + pow(t, 4) / 24 + pow(t, 5) / 120 + pow(t, 6) / 720 + pow(t, 7) / 5040 + Order(pow(x, 8));
+ result += check_series(e, 0, d.expand());
+
+ e = log(x);
+ d = e;
+ result += check_series(e, 0, d, 1);
+ result += check_series(e, 0, d, 2);
+
+ e = pow(x, 8) * pow(pow(x,3)+ pow(x + pow(x,3), 2), -2);
+ d = pow(x, 4) - 2*pow(x, 5) + Order(pow(x, 6));
+ result += check_series(e, 0, d, 6);
+
+ e = cos(x) * pow(sin(x)*(pow(x, 5) + 4 * pow(x, 2)), -3);
+ d = pow(x, -9) / 64 - 3 * pow(x, -6) / 256 - pow(x, -5) / 960 + 535 * pow(x, -3) / 96768
+ + pow(x, -2) / 1280 - pow(x, -1) / 14400 - numeric(283, 129024) - 2143 * x / 5322240
+ + Order(pow(x, 2));
+ result += check_series(e, 0, d, 2);
+
+ e = sqrt(1+x*x) * sqrt(1+2*x*x);
+ d = 1 + Order(pow(x, 2));
+ result += check_series(e, 0, d, 2);
+
+ symbol a("a");
+ e = pow(x, 4) * sin(a) + pow(x, 2);
+ d = pow(x, 2) + Order(pow(x, 3));
+ result += check_series(e, 0, d, 3);
+
+ symbol b("b");
+ e = log(a*x + b*x*x*log(x));
+ d = log(a*x) + b/a*log(x)*x - pow(b/a, 2)/2*pow(log(x)*x, 2) + Order(pow(x, 3));
+ result += check_series(e, 0, d, 3);
+
+ return result;