//+++++++++++++++++++++++++++++++++++++++++++++++++++++ // File automatically generated by Xfuzzy - DO NOT EDIT //+++++++++++++++++++++++++++++++++++++++++++++++++++++ package pkg.xfsg.mfunc; import xfuzzy.lang.*; public class isosceles extends ParamMemFunc { public isosceles() { super("xfsg","isosceles"); Parameter single[] = new Parameter[2]; single[0] = new Parameter("a"); single[1] = new Parameter("b"); setSingleParameters(single); } public double compute(double x) { double a = singleparam[0].value; double b = singleparam[1].value; return (x<a-b || x>a+b? 0 : (x<a? (x-a+b)/b : (a-x+b)/b )); } public double greatereq(double x) { double a = singleparam[0].value; double b = singleparam[1].value; return (x<a-b? 0 : (x<a? (x-a)/b +1: 1 )); } public double smallereq(double x) { double a = singleparam[0].value; double b = singleparam[1].value; return (x>a+b? 0 : (x>a? (a-x)/b +1: 1 )); } public double center() { double a = singleparam[0].value; double b = singleparam[1].value; return a; } public double basis() { double a = singleparam[0].value; double b = singleparam[1].value; return b; } public double[] deriv_eq(double x) { double[] deriv = new double[getNumberOfParameters()]; double a = singleparam[0].value; double b = singleparam[1].value; if(x<a && x>a-b) { deriv[0] = -1/b; deriv[1] = (a-x)/(b*b); } else if(x>a && x<a+b) { deriv[0] = 1/b; deriv[1] = (x-a)/(b*b); } else if(x==a-b) { deriv[0] = -0.5/b; deriv[1] = 0.5/b; } else if(x==a+b) { deriv[0] = 0.5/b; deriv[1] = 0.5/b; } else { deriv[0] = 0; deriv[1] = 0; } return deriv; } public double[] deriv_greq(double x) { double[] deriv = new double[getNumberOfParameters()]; double a = singleparam[0].value; double b = singleparam[1].value; if(x<a && x>a-b) { deriv[0] = -1/b; deriv[1] = (a-x)/(b*b); } else if(x==a-b) { deriv[0] = -0.5/b; deriv[1] = 0.5/b; } else if(x==a) { deriv[0] = -0.5/b; deriv[1] = 0; } else { deriv[0] = 0; deriv[1] = 0; } return deriv; } public double[] deriv_smeq(double x) { double[] deriv = new double[getNumberOfParameters()]; double a = singleparam[0].value; double b = singleparam[1].value; if(x>a && x<a+b) { deriv[0] = 1/b; deriv[1] = (x-a)/(b*b); } else if(x==a+b) { deriv[0] = 0.5/b; deriv[1] = 0.5/b; } else if(x==a) { deriv[0] = 0.5/b; deriv[1] = 0; } else { deriv[0] = 0; deriv[1] = 0; } return deriv; } public double[] deriv_center() { double[] deriv = new double[getNumberOfParameters()]; double a = singleparam[0].value; double b = singleparam[1].value; deriv[0] = 1; deriv[1] = 0; return deriv; } public double[] deriv_basis() { double[] deriv = new double[getNumberOfParameters()]; double a = singleparam[0].value; double b = singleparam[1].value; deriv[0] = 0; deriv[1] = 1; return deriv; } public boolean test () { double min = this.u.min(); double max = this.u.max(); double a = singleparam[0].value; double b = singleparam[1].value; return ( a>=min && a<=max && b>0 ); } public void update() { if(!isAdjustable()) return; double[] pos = get(); double[] desp = getDesp(); boolean[] adj = getAdjustable(); double min = this.u.min(); double max = this.u.max(); double a = singleparam[0].value; double b = singleparam[1].value; a += desp[0]; b += desp[1]; if(a<min) a = min; if(a>max) a = max; if(b<=0) b = (b-desp[1])/2; pos[0] = a; pos[1] = b; updateValues(pos); } public String getEqualJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x<a-b || x>a+b? 0 : (x<a? (x-a+b)/b : (a-x+b)/b )); "+eol; return code; } public String getGreqJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x<a-b? 0 : (x<a? (x-a)/b +1: 1 )); "+eol; return code; } public String getSmeqJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x>a+b? 0 : (x>a? (a-x)/b +1: 1 )); "+eol; return code; } public String getCenterJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return a; "+eol; return code; } public String getBasisJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return b; "+eol; return code; } public String getEqualCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x<a-b || x>a+b? 0 : (x<a? (x-a+b)/b : (a-x+b)/b )); "+eol; return code; } public String getGreqCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x<a-b? 0 : (x<a? (x-a)/b +1: 1 )); "+eol; return code; } public String getSmeqCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x>a+b? 0 : (x>a? (a-x)/b +1: 1 )); "+eol; return code; } public String getCenterCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return a; "+eol; return code; } public String getBasisCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return b; "+eol; return code; } public String getEqualCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x<a-b || x>a+b? 0 : (x<a? (x-a+b)/b : (a-x+b)/b )); "+eol; return code; } public String getGreqCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x<a-b? 0 : (x<a? (x-a)/b +1: 1 )); "+eol; return code; } public String getSmeqCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return (x>a+b? 0 : (x>a? (a-x)/b +1: 1 )); "+eol; return code; } public String getCenterCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return a; "+eol; return code; } public String getBasisCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return b; "+eol; return code; } }