public double u(double x) { double xa = x-_a; return -_c*xa*exp(-0.5*(xa*xa)/(_b*_b)); } public double umax() {
public double u2(double x1, double x2, double x3) { double xa1 = x1-_a1; double xa2 = x2-_a2; double xa3 = x3-_a3; return -_c2*xa2*exp(-0.5*( (xa1*xa1)/(_b1*_b1)+ (xa2*xa2)/(_b2*_b2)+ (xa3*xa3)/(_b3*_b3))); } public double u3(double x1, double x2, double x3) {
public GaussianWarp1(double umax, int n) { super(n); _a = (n-1)/2.0; _b = _a/3; _c = umax*exp(0.5)/_b; _umax = umax; _emax = _c; } public double u(double x) {
public double u1(double x1, double x2) { double xa1 = x1-_a1; double xa2 = x2-_a2; return -_c1*xa1*exp(-0.5*((xa1*xa1)/(_b1*_b1)+(xa2*xa2)/(_b2*_b2))); } public double u2(double x1, double x2) {
public double e(double x) { double xa = x-_a; return -_c*(1.0-(xa*xa)/(_b*_b))*exp(-0.5*(xa*xa)/(_b*_b)); } public double emax() {
public double u1(double x1, double x2, double x3) { double xa1 = x1-_a1; double xa2 = x2-_a2; double xa3 = x3-_a3; return -_c1*xa1*exp(-0.5*( (xa1*xa1)/(_b1*_b1)+ (xa2*xa2)/(_b2*_b2)+ (xa3*xa3)/(_b3*_b3))); } public double u2(double x1, double x2, double x3) {
public double u3(double x1, double x2, double x3) { double xa1 = x1-_a1; double xa2 = x2-_a2; double xa3 = x3-_a3; return -_c3*xa3*exp(-0.5*( (xa1*xa1)/(_b1*_b1)+ (xa2*xa2)/(_b2*_b2)+ (xa3*xa3)/(_b3*_b3))); } private double _a1,_a2,_a3;
public double u2(double x1, double x2) { double xa1 = x1-_a1; double xa2 = x2-_a2; return -_c2*xa2*exp(-0.5*((xa1*xa1)/(_b1*_b1)+(xa2*xa2)/(_b2*_b2))); } private double _a1,_a2;
public GaussianWarp3( double u1max, double u2max, double u3max, int n1, int n2, int n3) { super(n1,n2,n3); _a1 = (n1-1)/2.0; _a2 = (n2-1)/2.0; _a3 = (n3-1)/2.0; _b1 = _a1/3.0; _b2 = _a2/3.0; _b3 = _a3/3.0; _c1 = u1max*exp(0.5)/_b1; _c2 = u2max*exp(0.5)/_b2; _c3 = u3max*exp(0.5)/_b3; } public double u1(double x1, double x2, double x3) {
private static float gaussian(float s, float x) { float xx = x*x; float ss = s*s; return exp(-0.5f*xx/ss)/sqrt(2.0f*FLT_PI*ss); } private static float gaussian(float s, float x1, float x2) {
double n1 = exp(-b1[i]/sigma) * ( c1[i]*sin(w1[i]/sigma) - (c0[i]+2.0*a0[i])*cos(w1[i]/sigma)) + exp(-b0[i]/sigma) * ( a1[i]*sin(w0[i]/sigma) - (2.0*c0[i]+a0[i])*cos(w0[i]/sigma)); double n2 = 2.0*exp(-(b0[i]+b1[i])/sigma) * ( (a0[i]+c0[i])*cos(w1[i]/sigma)*cos(w0[i]/sigma) - a1[i]*cos(w1[i]/sigma)*sin(w0[i]/sigma) - c1[i]*cos(w0[i]/sigma)*sin(w1[i]/sigma)) + c0[i]*exp(-2.0*b0[i]/sigma) + a0[i]*exp(-2.0*b1[i]/sigma); double n3 = exp(-(b1[i]+2.0*b0[i])/sigma) * ( c1[i]*sin(w1[i]/sigma) - c0[i]*cos(w1[i]/sigma)) + exp(-(b0[i]+2.0*b1[i])/sigma) * ( a1[i]*sin(w0[i]/sigma) - a0[i]*cos(w0[i]/sigma)); double d1 = -2.0*exp(-b0[i]/sigma)*cos(w0[i]/sigma) - 2.0*exp(-b1[i]/sigma)*cos(w1[i]/sigma); double d2 = 4.0*exp(-(b0[i]+b1[i])/sigma) * cos(w0[i]/sigma)*cos(w1[i]/sigma) + exp(-2.0*b0[i]/sigma) + exp(-2.0*b1[i]/sigma); double d3 = -2.0*exp(-(b0[i]+2.0*b1[i])/sigma)*cos(w0[i]/sigma) - 2.0*exp(-(b1[i]+2.0*b0[i])/sigma)*cos(w1[i]/sigma); double d4 = exp(-2.0*(b0[i]+b1[i])/sigma); _n0[i] = (float)n0; _n1[i] = (float)n1;
scal = 1.0f/(1.0f+exp(k*(thresh-attr[lev][1][i2][i1])));
} else { double y = _q/r; g = (exp(-pr)/sqrt(pr)) * (1.25331414 + y*(-0.7832358e-1 +
scal = 1.0f/(1.0f+exp(k*(thresh-attr[lev][3][i3][i2][i1])));
scale1 *= exp((-0.125*l1*l1)/(_sigma1*_sigma1)); } else { scale1 *= max(0.0,1.0+2.0*_sigma1-abs(l1))/(1.0+2.0*_sigma1);
float d2 = x2-t*b2; float d3 = x3-t*b3; x[i3][i2][i1] = exp(-0.125f*(d1*d1+d2*d2+d3*d3));
assertEqual(rx,log(exp(rx)));