brent.h

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 // constructors:
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;    // a vector of size nterms i.e. 1+degree
00026   virtual double operator() (double x);
00027 // constructors:
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 // === simple wrapper functions
00051 // === for convenience and/or compatibility
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 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation