]> www.ginac.de Git - ginac.git/blobdiff - check/exam_pseries.cpp
* Special power-simplification rules may now be defined for functions.
[ginac.git] / check / exam_pseries.cpp
index 8ecbe7accbb43aba3f9b92e4f93f2a1d911c2fc4..537f333581e3573e01b511468148734307dbee12 100644 (file)
@@ -3,7 +3,7 @@
  *  Series expansion test (Laurent and Taylor series). */
 
 /*
- *  GiNaC Copyright (C) 1999-2004 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
@@ -17,7 +17,7 @@
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
 #include "exams.h"
@@ -43,9 +43,15 @@ static unsigned exam_series1()
 {
        using GiNaC::log;
 
+       symbol a("a");
+       symbol b("b");
        unsigned result = 0;
        ex e, d;
        
+       e = pow(a+b, x);
+       d = 1 + Order(pow(x, 1));
+       result += check_series(e, 0, d, 1);
+
        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);
@@ -115,6 +121,22 @@ static unsigned exam_series1()
            + 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);
+
+       e = pow(x, 4) * sin(a) + pow(x, 2);
+       d = pow(x, 2) + Order(pow(x, 3));
+       result += check_series(e, 0, d, 3);
+
+       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);
+
+       e = pow((x+a), b);
+       d = pow(a, b) + (pow(a, b)*b/a)*x + (pow(a, b)*b*b/a/a/2 - pow(a, b)*b/a/a/2)*pow(x, 2) + Order(pow(x, 3));
+       result += check_series(e, 0, d, 3);
+
        return result;
 }