syfi/ptv.cpp

Go to the documentation of this file.
00001 #include <ptv.h>
00002 #include <iostream>
00003 
00004 
00005 double ptv::tol = 10e-6;  
00006 
00007 ptv::ptv() { 
00008   dim = 0; 
00009   v = 0; 
00010 }
00011 
00012 ptv::ptv(int size_) {
00013   dim = size_; 
00014   v = new double[dim]; 
00015   for (int i=0; i< dim; i++) { 
00016     v[i] = 0.0;
00017   }
00018 }
00019 
00020 
00021 ptv::ptv(int size_, double* v_) {
00022   dim = size_; 
00023   v = new double[dim]; 
00024   for (int i=0; i< dim; i++) { 
00025     v[i] = v_[i];
00026   }
00027 }
00028 
00029 ptv::ptv(const ptv& p){
00030   dim = p.size(); 
00031   v = new double[dim]; 
00032   for (int i=0; i< dim; i++) { 
00033     v[i] = p[i]; 
00034   }
00035 
00036 }
00037 
00038 ptv::~ptv() { 
00039   if (dim > 0) delete [] v; 
00040 }
00041 
00042 const int ptv::size() const { return dim;}
00043 
00044 const double& ptv::operator [] (int i) const { 
00045   return v[i];   
00046 }
00047 
00048 double& ptv::operator [] (int i) { 
00049   return v[i];   
00050 }
00051 
00052 ptv& ptv::operator = (const ptv& p) { 
00053   if ( this != &p) { 
00054     if ( dim > 0 ) delete [] v; 
00055     dim = p.size(); 
00056     v = new double[dim]; 
00057     for (int i=0; i< dim; i++) { 
00058       v[i] = p[i]; 
00059     }
00060   }
00061   return *this; 
00062 }
00063 
00064 
00065 
00066 
00067 bool ptv::is_less(const ptv& p) const {
00068   double tmp = 0; 
00069 
00070   if ( dim <  p.size() ) return true ; 
00071   if ( dim >  p.size() ) return false; 
00072 
00073   for (int i=dim-1; i>= 0; i--) {
00074     if ( v[i] + tol >= p[i] && v[i] - tol <= p[i] ) {   
00075     } else if ( v[i] - tol < p[i] ) { 
00076         return true; 
00077     } else if ( v[i] + tol > p[i] ) { 
00078         return false ; 
00079     }
00080   }
00081   return false; 
00082 
00083 
00084   /*
00085   for (int i=0; i< dim; i++) {
00086     if ( v[i] + tol >= p[i] && v[i] - tol <= p[i] ) {   
00087     } else if ( v[i] - tol < p[i] ) { 
00088         return true; 
00089     } else if ( v[i] + tol > p[i] ) { 
00090         return false ; 
00091     }
00092   }
00093   return false; 
00094   */
00095 }
00096   
00097 
00098 
00099 
00100 std::ostream & operator<< ( std::ostream& os, const ptv& p) { 
00101   if (p.size() >= 1) {
00102     os <<"["; 
00103     for (int i=0; i< p.size()-1; i++) { 
00104       os <<p[i]<<","; 
00105     }
00106     os <<p[p.size()-1]<<"]"; 
00107   } else {
00108     os <<"ptv not created properly"<<std::endl; 
00109   }
00110 }
00111 
00112 
00113 
00114 
00115 

Generated on Wed Apr 19 12:38:14 2006 for SyFi by  doxygen 1.4.4