#ifndef Function_H
#define Function_H

namespace functions
{

  /**
   * This abstract class declares the Function interface.  
   * Inherit from this class to provide functionality.
   */
  class Function
  {
  public:

      /**
       * The destructor should be declared virtual in an interface class.
       */
    virtual ~ Function ()
    {
    }
      /**
       * Returns the function value at x.  Implement this function in
       * a derived class to provide required functionality.
       */
    virtual double evaluate (double x) = 0;

  };
}
#endif // Function_H