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