import java.util.*;

//***********************************************************************************
/** Class to return iterate of user's map function.<br>
*/
//***********************************************************************************

public class Map1DMyFunction extends Map1DFunction {

      double y;
      double xnew,ynew;    

      Map1DMyFunction() {
            nParameters=2;
            a=new double[nParameters];
            aDefault = new double [nParameters];
            aDefault[0]=0.4;
            aDefault[1]=0.3;
            aMinimum=0.;
            aMaximum=1.;
            enforceARange=true;
            enforceBRange=true;
            bMinimum=0.;
            bMaximum=0.5;
            x0Default=0.2;
            title = "Bakers Map";
            y=Math.random();
   
      }
      
      public double evaluateFunction(double x) {            

           if (y<a[0]){
                  xnew=a[1]*x;
                  ynew=y/a[0];
           }
           else{  
                xnew=(1-a[1])+a[1]*x;
                ynew=(y-a[0])/(1-a[0]);
           }
           y=ynew; 
           return xnew;           
      }
      
      public double evaluateDerivative(double x) {
            return a[1];
      }                     
      
      public void setParameters(double[] parameters) {
            if(parameters.length < nParameters)
                  System.out.println("Incorrect number of parameters");
            for(int i=0; i<nParameters;i++) a[i]=parameters[i];
            y=Math.random();
      }
         
         
      
}

