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
00086
00087
00088
00089
00090
00091
00092
00093
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