package org.freehep.math.minuit; /** * * @version $Id: SinParameterTransformation.java 8584 2006-08-10 23:06:37Z duns $ */ class SinParameterTransformation { double int2ext(double value, double upper, double lower) { return lower + 0.5*(upper - lower)*(Math.sin(value) + 1.); } double ext2int(double value, double upper, double lower, MnMachinePrecision prec) { double piby2 = 2.*Math.atan(1.); double distnn = 8.*Math.sqrt(prec.eps2()); double vlimhi = piby2 - distnn; double vlimlo = -piby2 + distnn; double yy = 2.*(value - lower)/(upper - lower) - 1.; double yy2 = yy*yy; if(yy2 > (1. - prec.eps2())) { if(yy < 0.) { return vlimlo; } else { return vlimhi; } } else { return Math.asin(yy); } } double dInt2Ext(double value, double upper, double lower) { return 0.5*Math.abs((upper - lower)*Math.cos(value)); } }