00001
00002 #ifndef HURST_BASE_H
00003 #define HURST_BASE_H
00004
00005 #include <math.h>
00006
00007 #include <vector>
00008
00009 #include "lregress.h"
00010
00027 class hurst_base {
00028 protected:
00029 static double log10of2;
00030 double log2( const double val ) const
00031 {
00032 return log10( val )/ log10of2;
00033 }
00034
00035 void print_regression_points( std::vector<lregress::point> data );
00036
00037 public:
00038 class hurstInfo {
00039 private:
00040 double slope_;
00041 double intercept_;
00042 double slopeErr_;
00043 std::vector<lregress::point> points_;
00044
00045 hurstInfo( const hurstInfo &rhs );
00046 public:
00047 hurstInfo()
00048 {
00049 slope_ = 0;
00050 slopeErr_ = 0;
00051 }
00052 ~hurstInfo() {};
00053
00054 double slope() { return slope_; }
00055 void slope( double s ) { slope_ = s; }
00056
00057 double slopeErr() { return slopeErr_; }
00058 void slopeErr( double se ) { slopeErr_ = se; }
00059
00060 double intercept() { return intercept_; }
00061 void intercept( double intr ) { intercept_ = intr; }
00062
00063 std::vector<lregress::point> &points() { return points_; }
00064 };
00065
00066 hurst_base() {};
00067 ~hurst_base() {};
00068 virtual void calc_hurst_est( const double *v,
00069 const size_t N,
00070 hurstInfo &info ) = 0;
00071 };
00072
00073 #endif