import java.util.*;

//***********************************************************************************
/** Class to return iterate of 1d Circle map function.<br>
*/
//***********************************************************************************
public class CircleFunction extends Map1DFunction {
      private static final double Pi=Math.PI;
      private static final double Pi2=2*Pi;

      CircleFunction() {
            nParameters=2;
            a=new double[nParameters];
            aDefault = new double [nParameters];
            aDefault[0]=0.5;
            aDefault[1]=0.2;
            aMinimum=0.;
            aMaximum=4.;
            enforceARange=false;
            enforceBRange=false;
            x0Default=0.2;
            title = "Circle Map";
            winding=0;
            total=0;
            showWinding=true;               
      }
      
      public double evaluateFunction(double x) {
            return mod(x+a[1]-a[0]*Math.sin(Pi2*x)/Pi2);
      }
      
      public double evaluateDerivative(double x) {
            return 1-a[0]*Math.cos(Pi2*x); 
      }                                 

}      




