#include "machdefs.h" #include #include #include "srandgen.h" #include "tarrinit.h" #include "array.h" #include "timing.h" #include "intflapack.h" int lpk_tarr(int n); int lpk_tmtx(int n); static double TOLERANCE = 1.e-6; int main(int narg, char* arg[]) { SophyaInit(); InitTim(); // Initializing the CPU timer if (narg < 2) { cout << " lpk - LinAlg/LapackServer test - Usage lpk t/s [size=5] [prtlev=0] [nprtmax=100]\n" << " t: lpk_tarr() rztest_lapack with TArray \n" << " s: lpk_tmtx() LapackServer with TMatrix \n" << endl; exit(0); } int n = 5; int opt = 's'; opt = *(arg[1]); if (narg > 2) n = atoi(arg[2]); int nprt = 100; int prtlev = 1; if (narg > 3) prtlev = atoi(arg[3]); if (narg > 4) nprt = atoi(arg[4]); int rc = 0; BaseArray::SetMaxPrint(nprt, prtlev); try { if (opt == 's') rc = lpk_tmtx(n); else rc = lpk_tarr(n); } catch (PThrowable exc) { cerr << " catched Exception (lpk.cc) " << exc.Msg() << endl; rc = 77; } catch (...) { cerr << " catched unknown (...) exception (lpk.cc) " << endl; rc = 78; } PrtTim(" End of lpk LinAlg/Lapack test "); cout << " --------------- END of Programme -------------- " << endl; return(rc); } int lpk_tmtx(int n) { int i,j,k; BaseArray::SetDefaultMemoryMapping(BaseArray::FortranMemoryMapping); Matrix a(n,n); for(i=0; i -------- " << endl; cout << " ------------ Matrix A = \n " << a << "\n" << endl; cout << " ------------ Matrix X = \n " << x << "\n" << endl; cout << " ------------ Matrix B = \n " << b << "\n" << endl; cout << "\n Calling LapackLinSolve(a,b) .... " << endl; PrtTim(" Calling LapackLinSolve(a,b) "); LapackLinSolve(a,b); PrtTim(" End LapackLinSolve(a,b) "); cout << " ------------ Result B(=X ?) = \n " << b << "\n" << endl; Vector diff = b-x; cout << " ------------ Vector diff B-X = \n " << diff << "\n" << endl; double min,max; diff.MinMax(min, max); cout << " Min/Max difference Vector (?=0) , Min= " << min << " Max= " << max << endl; if ((fabs(min) > TOLERANCE) || (fabs(max) > TOLERANCE)) { cout << " !!! Difference exceeding tolerance (=" << TOLERANCE << ") !!!" << endl; return(99); } return(0); } int lpk_tarr(int n) { int i,j,k; TArray a(n,n); for(i=0; i x(n,1), b(n,1); r_4 sum ; for(i=0; i -------- " << endl; cout << " ------------ Array A = \n " << a << "\n" << endl; cout << " ------------ Array X = \n " << x << "\n" << endl; cout << " ------------ Array B = \n " << b << "\n" << endl; cout << "\n Calling rztest_lapack ... " << endl; rztest_lapack(a, b); cout << " ------------ Result B(=X ?) = \n " << b << "\n" << endl; return(0); }