//***********************************************************************************
/** Class to return iterate of users 2d map function.<br>
*/
//***********************************************************************************
public class Map2DMyFunction extends Map2DFunction {
      double X,Y;

      Map2DMyFunction() {      

            nParameters=2;    
            a = new double[nParameters];    
            aDefault = new double[nParameters];
            aDefault[0]=1.4;
            aDefault[1]=0.3;      
            title = "My Function";
            xminDefault=-1.0;
            xmaxDefault=1.5;
            yminDefault=-0.5; 
            ymaxDefault=0.5;
            showWinding=false ;
      }      
                       
      
//***********************************************************************************      
/** iterates the map function
* @param x input value
* @return iterated value
*/
//***********************************************************************************
      public void iterate(double[] x) {                       

            X = x[0];
            Y = x[1];

            x[0] = Y + 1 - a[0]*X*X;  
            x[1] = a[1]*X; 
            x[2]=X;
            x[3]=Y;   
      }      

//***********************************************************************************      
/** iterates the tangent space to the map
* @param x input value and returns updated values
* x[0] and x[1] contain the new values of X and Y
* x[2] and x[3] contain the previous values
* @param t value of tangent vector (updated by iteration)
*/
//***********************************************************************************
      public void iterateTangent(double[] x, double[] t) {             
      
            X = t[0];
            Y = t[1];
            t[0] = Y - 2*a[0]*x[0]*X;
            t[1] = a[1]*X;      
      }    
//***********************************************************************************               
}
