Go to the documentation of this file.00001 #include <vector>
00002 namespace shogun
00003 {
00004 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00005 class func_base{
00006 public:
00007 virtual double operator() (double) = 0;
00008 };
00009
00010 class monicPoly : public func_base {
00011 public:
00012 std::vector<double> coeff;
00013 virtual double operator() (double x);
00014
00015 monicPoly(const size_t degree)
00016 : coeff(degree) {}
00017 monicPoly(const std::vector<double>& v)
00018 : coeff(v) {}
00019 monicPoly(const double* c, size_t degree)
00020 : coeff(std::vector<double>(c, c+degree)) {}
00021 };
00022
00023 class Poly : public func_base {
00024 public:
00025 std::vector<double> coeff;
00026 virtual double operator() (double x);
00027
00028 Poly(const size_t degree)
00029 : coeff(1+degree) {}
00030 Poly(const std::vector<double>& v)
00031 : coeff(v) {}
00032 Poly(const double* c, size_t degree)
00033 : coeff(std::vector<double>(c, 1+c+degree)) {}
00034 };
00035
00036 double glomin ( double a, double b, double c, double m, double e, double t,
00037 func_base& f, double &x );
00038 double local_min ( double a, double b, double t, func_base& f,
00039 double &x );
00040 double local_min_rc ( double &a, double &b, int &status, double value );
00041 double r8_abs ( double x );
00042 double r8_epsilon ( );
00043 double r8_max ( double x, double y );
00044 double r8_sign ( double x );
00045 void timestamp ( );
00046 double zero ( double a, double b, double t, func_base& f );
00047 void zero_rc ( double a, double b, double t, double &arg, int &status,
00048 double value );
00049
00050
00051
00052 double glomin ( double a, double b, double c, double m, double e, double t,
00053 double f ( double x ), double &x );
00054 double local_min ( double a, double b, double t, double f ( double x ),
00055 double &x );
00056 double zero ( double a, double b, double t, double f ( double x ) );
00057 #endif
00058 }