00001
00029 #ifndef SHAPE
00030 #define SHAPE
00031
00032 #include <cstddef>
00033
00045 class Shape {
00046 public:
00047 inline Shape () {}
00048
00049 inline virtual ~Shape () {}
00050
00051 inline Shape (const Shape &) {}
00052
00053 virtual Shape * clone () const = 0;
00054
00055
00056 virtual size_t getNumFunctions () const = 0;
00057 virtual size_t getNumVariables () const = 0;
00058
00068
00069 virtual double getVal (size_t a, const double *x) const = 0;
00070
00078 virtual double getDVal (size_t a, const double *x, size_t i) const = 0;
00079
00084 bool consistencyTest (const double *x, const double Pert) const;
00085 };
00086
00087 #endif