]> www.ginac.de Git - ginac.git/blobdiff - check/linear_solve.cpp
- Completely restructured the checks in subdir check/.
[ginac.git] / check / linear_solve.cpp
diff --git a/check/linear_solve.cpp b/check/linear_solve.cpp
deleted file mode 100644 (file)
index d006beb..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/** @file linear_solve.cpp
- *
- * These test routines do some simple checks on solving linear systems of
- * symbolic equations. */
-
-/*
- *  GiNaC Copyright (C) 1999-2000 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
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  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
- */
-
-#include "ginac.h"
-
-#ifndef NO_NAMESPACE_GINAC
-using namespace GiNaC;
-#endif // ndef NO_NAMESPACE_GINAC
-
-static unsigned lsolve1(void)
-{
-    // A trivial example.
-    unsigned result = 0;
-    symbol x("x");
-    ex eq, aux;
-    
-    eq = (3*x+5 == numeric(8));
-    aux = lsolve(eq, x);
-    if (aux != 1) {
-        result++;
-        clog << "solution of 3*x+5==8 erroneously returned "
-             << aux << endl;
-    }
-    
-    return result;
-}
-
-static unsigned lsolve2a(void)
-{
-    // An example from the Maple online-help.
-    unsigned result = 0;
-    symbol a("a"), b("b"), x("x"), y("y");
-    lst eqns, vars;
-    ex sol;
-    
-    // Create the linear system [a*x+b*y==3,x-y==b]...
-    eqns.append(a*x+b*y==3).append(x-y==b);
-    // ...to be solved for [x,y]...
-    vars.append(x).append(y);
-    // ...and solve it:
-    sol = lsolve(eqns, vars);
-    ex sol_x = sol.op(0).rhs();  // rhs of solution for first variable (x)
-    ex sol_y = sol.op(1).rhs();  // rhs of solution for second variable (y)
-    
-    // It should have returned [x==(3+b^2)/(a+b),y==(3-a*b)/(a+b)]
-    if (!normal(sol_x - (3+pow(b,2))/(a+b)).is_zero() ||
-        !normal(sol_y - (3-a*b)/(a+b)).is_zero()) {
-        result++;
-        clog << "solution of the system " << eqns << " for " << vars
-             << " erroneously returned " << sol << endl;
-    }
-    
-    return result;
-}
-
-static unsigned lsolve2b(void)
-{
-    // A boring example from Mathematica's online-help.
-    unsigned result = 0;
-    symbol x("x"), y("y");
-    lst eqns, vars;
-    ex sol;
-    
-    // Create the linear system [3*x+y==7,2*x-5*y==8]...
-    eqns.append(3*x+y==7).append(2*x-5*y==8);
-    // ...to be solved for [x,y]...
-    vars.append(x).append(y);
-    // ...and solve it:
-    sol = lsolve(eqns, vars);
-    ex sol_x = sol.op(0).rhs();  // rhs of solution for first variable (x)
-    ex sol_y = sol.op(1).rhs();  // rhs of solution for second variable (y)
-    
-    // It should have returned [x==43/17,y==-10/17]
-    if (!(sol_x - numeric(43,17)).is_zero() ||
-        !(sol_y - numeric(-10,17)).is_zero()) {
-        result++;
-        clog << "solution of the system " << eqns << " for " << vars
-             << " erroneously returned " << sol << endl;
-    }
-    
-    return result;
-}
-
-static unsigned lsolve2c(void)
-{
-    // An example from the Maple online-help.
-    unsigned result = 0;
-    symbol x("x"), y("y");
-    lst eqns, vars;
-    ex sol;
-    
-    // Create the linear system [I*x+y==1,I*x-y==2]...
-    eqns.append(I*x+y==1).append(I*x-y==2);
-    // ...to be solved for [x,y]...
-    vars.append(x).append(y);
-    // ...and solve it:
-    sol = lsolve(eqns, vars);
-    ex sol_x = sol.op(0).rhs();  // rhs of solution for first variable (x)
-    ex sol_y = sol.op(1).rhs();  // rhs of solution for second variable (y)
-    
-    // It should have returned [x==-3/2*I,y==-1/2]
-    if (!(sol_x - numeric(-3,2)*I).is_zero() ||
-        !(sol_y - numeric(-1,2)).is_zero()) {
-        result++;
-        clog << "solution of the system " << eqns << " for " << vars
-             << " erroneously returned " << sol << endl;
-    }
-    
-    return result;
-}
-
-unsigned linear_solve(void)
-{
-    unsigned result = 0;
-    
-    cout << "checking linear solve..." << flush;
-    clog << "---------linear solve:" << endl;
-    
-    result += lsolve1();
-    result += lsolve2a();
-    result += lsolve2b();
-    result += lsolve2c();
-    
-    if (!result) {
-        cout << " passed ";
-        clog << "(no output)" << endl;
-    } else {
-        cout << " failed ";
-    }
-    
-    return result;
-}