2 Temporary implementation of vector and matrix classes
3 This is more or less borrowed from Serguei's program
11 #include <math.h> // for sqrt()
14 typedef const class RVector CRVector;
15 typedef CRVector& RCRVector;
16 typedef const class RMatrix CRMatrix ;
17 typedef CRMatrix& RCRMatrix;
21 #define max(A,B) ((A) > (B) ? (A):(B))
22 #define min(A,B) ((A) < (B) ? (A):(B))
24 /********************* Class RVector *********************/
30 int len; // size of array
31 double* elements; // array of values
34 RVector(int); // Constructor
35 RVector(RCRVector); // copy constructor
36 ~RVector() { delete[] elements; elements=0 ; len=0; }
38 RCRVector operator=(double) ;
39 RCRVector operator=(RCRVector);
41 double & operator () (int i) const {return elements[i] ; }
42 double nrm2() ; // Euclidian norm
44 double *raw_data() { return elements; }
45 const double *raw_data_const() const { return elements; }
47 friend ostream & operator << (ostream &, const RVector &);
49 friend double norm2(RCRVector) ;
50 friend double normInf(RCRVector) ;
51 friend double dot(RCRVector, RCRVector) ;
52 friend void scal(double, RCRVector) ;
53 friend void copy(RCRVector, RCRVector) ;
54 friend void axpy(double, RCRVector, RCRVector) ;
55 friend void gemv(char,double, RCRMatrix, RCRVector, double, RCRVector);
56 friend void ger(double alpha, RCRVector, RCRVector, RCRMatrix);
58 int GetLength() const { return len; }; // get vector size
61 /******************* Class RMatrix *************************/
66 double* Vals; // array of values
71 RMatrix(int); // dimension
72 ~RMatrix() { delete[] Vals; Vals=0 ; Dim=0; }
74 RMatrix(RCRMatrix); // copy constructor
75 RCRMatrix operator=(double num) ;
76 RCRMatrix operator=(RCRMatrix) ; // (needed for template stuff)
78 double& operator()(int vidx,int hidx) ;
79 friend ostream & operator << (ostream &, const RMatrix &);
81 friend void gemv(char,double, RCRMatrix, RCRVector, double, RCRVector);
82 friend void ger(double alpha,RCRVector,RCRVector,RCRMatrix);
84 int GetDim() { return Dim; }; // get dimension