lib_ex_pour_HZpp/Partie_2/algebre_lineaire/MV++/mv/testing/tvec.cc

1 line
7.7 KiB
C++
Raw Normal View History

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ /* */ /* */ /* MV++ Numerical Matrix/Vector C++ Library */ /* MV++ Version 1.5 */ /* */ /* R. Pozo */ /* National Institute of Standards and Technology */ /* */ /* NOTICE */ /* */ /* Permission to use, copy, modify, and distribute this software and */ /* its documentation for any purpose and without fee is hereby granted */ /* provided that this permission notice appear in all copies and */ /* supporting documentation. */ /* */ /* Neither the Institution (National Institute of Standards and Technology) */ /* nor the author makes any representations about the suitability of this */ /* software for any purpose. This software is provided ``as is''without */ /* expressed or implied warranty. */ /* */ /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ // // tvec.cc Testing routine for MV++ vector class // // Usage: <length> <block-index start> <block-index end> // // (Suggest these to be relatively small positive numbers, as // output is proportional to "length".) // // This test program is self-explanatory (there are diagnostics // output message of what each step is performing)and excercise // most of the MV_Vector methods, thus providing examples of how // these are used. // #include <iostream.h> #include <stdlib.h> #include <console.h> // sp<73>cific mac : GR #include <SIOUX.h> // sp<73>cific mac : GR #include "mvvtp.h" // example function to zero-out a vector: illustrates how to pass // vectors by "reference" (modifiable), as opposed to by "value" // void foo(MV_Vector<double> *Aptr) { MV_Vector<double> &A = *Aptr; A = 0.0; } // example funciton to return MV_Vectors: (returns vector + scalar) // MV_Vector<double> fexample(const MV_Vector<double> A, double s) { int N = A.size(); MV_Vector<double> B(N); for (int i=0; i<N; i++) B(i) = A(i) + s; return B; } int main(int argc, char *argv[]) { argc = ccommand( &argv ); // sp<73>cific mac : GR if (argc<4) { cout << "Usage " << argv[0] << " N start end" << endl; exit(1); } int N = atoi(argv[1]); int start = atoi(argv[2]); int end = atoi(argv[3]); int i; cout << "Using N = " << N << " start = " << start << " end = " << end << endl; MV_Vector<double> C; cout << " Test null constructor: MV_Vector C() " << endl; cout << C << endl; MV_Vector<double> A(N); cout << " Test MV_Vector(int) constructor: MV_Vector A(N) " << endl; cout << " values should be uninitalized.. " << endl; cout << A << endl; MV_Vector<double> B(N, 3.0); cout << " Test MV_Vector(int, val) constructor: MV_Vector B(N, 3.0) " << endl; cout << " all values should be 3.0: " << endl; cout << B << endl; cout << " Test A(i) indexing, set A(i) = i, and B(i) = -i " << endl; for (i=0; i<N; i++) { A(i) = i; B(i) = -i; } cout << " A " << endl; cout << A << endl; cout << " B " << endl; cout << B << endl; cout << "Test opeator= : C = A " << endl; cout << "