#pragma once

#include"exprtk.hpp"
#include"EvaluatorInterface.h"

class evaluator: public EvaluatorInterface
{
public:
	double level;

	evaluator(void){
		level = 0.0;
	}

	evaluator(double l){
		level = l;
	}

    void setLevel(double l){
		level = l;
	}


	~evaluator(void){};

	double eval(double x, double y){
	  //return x*x*y-sin(y*y*x)-cos(x*y)+level;
	  //return cos(y)*cos(x)+level;
	  //return (x*x+y*y)*(x*x+y*y)*(x*x+y*y)-4*16*x*x*y*y+level;
	  return (x*x+y*y-1)*(x*x+y*y-1)*(x*x+y*y-1)-x*x*y*y*y+level; 
	  //return (x*x*x-4)+y*y-5+level;
	  //return y*y*(y*y-9)-x*x*(x*x-10)+x*x+y*y+level+5;
	  //return (y*y-x*x)*(x-1)*(2*x-3)-4*(x*x+y*y-2*x)*(x*x+y*y-2*x)+level+1;
	  //return x*x-y*y+level;
	}

};