00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GPPVECTOR_H
00021 #define GPPVECTOR_H
00022
00023
00024
00025
00026 #include <gsl/gsl_vector.h>
00027 #include <gsl/gsl_math.h>
00028 #include <gsl/gsl_blas.h>
00029
00030
00031
00032
00033
00034
00035 #include <SawObject.h>
00036
00037
00038
00049 class SawVector : public SawObject
00050 {
00051 public:
00052 SawVector( uint size = 1, double a = 0.0 );
00053 SawVector( double* array, uint size );
00054 SawVector( const SawVector& vector );
00055 void operator = ( const SawVector& vector );
00056 ~SawVector();
00057
00058 void swapElements( uint i, uint j ) ;
00059 void reverse() ;
00060
00061 gsl_vector* getGSLVector() const ;
00062 void setGSLVector( gsl_vector* vector ) ;
00063 uint getSize() const ;
00064 double get( uint i ) const;
00065 void set( uint i, double value );
00066
00067 bool operator == ( SawVector vector );
00068 bool operator != ( SawVector vector );
00069
00070 double getMax( uint* i=NULL ) const ;
00071 double getMin( uint* i=NULL ) const ;
00072
00073 bool isNull() const ;
00074
00075 SawVector operator + ( SawVector vector );
00076 SawVector operator - ( SawVector vector );
00077 double operator * ( SawVector vector );
00078 double getEuclideanNorm() ;
00079
00080 friend SawVector operator * ( SawVector vector, double a );
00081 friend SawVector operator * ( double a, SawVector vector );
00082 friend SawVector operator + ( SawVector vector, double a );
00083 friend SawVector operator + ( double a, SawVector vector );
00084 friend SawVector operator ^ ( double a, SawVector vector );
00085
00086 friend ostream& operator << ( ostream& os, const SawVector& e ) ;
00087 friend istream& operator >> ( istream& is, const SawVector& e ) ;
00088
00089 private:
00090 gsl_vector* vector ;
00091 uint size ;
00092 };
00093
00094 #endif