\left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right) + 0.50.5 + \frac{{\left(-2 \cdot \log u1\right)}^{0.5} \cdot 1}{6} \cdot \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)double f(double u1, double u2) {
double r75306 = 1.0;
double r75307 = 6.0;
double r75308 = r75306 / r75307;
double r75309 = -2.0;
double r75310 = u1;
double r75311 = log(r75310);
double r75312 = r75309 * r75311;
double r75313 = 0.5;
double r75314 = pow(r75312, r75313);
double r75315 = r75308 * r75314;
double r75316 = 2.0;
double r75317 = atan2(1.0, 0.0);
double r75318 = r75316 * r75317;
double r75319 = u2;
double r75320 = r75318 * r75319;
double r75321 = cos(r75320);
double r75322 = r75315 * r75321;
double r75323 = r75322 + r75313;
return r75323;
}
double f(double u1, double u2) {
double r75324 = 0.5;
double r75325 = -2.0;
double r75326 = u1;
double r75327 = log(r75326);
double r75328 = r75325 * r75327;
double r75329 = pow(r75328, r75324);
double r75330 = 1.0;
double r75331 = r75329 * r75330;
double r75332 = 6.0;
double r75333 = r75331 / r75332;
double r75334 = u2;
double r75335 = 2.0;
double r75336 = atan2(1.0, 0.0);
double r75337 = r75335 * r75336;
double r75338 = r75334 * r75337;
double r75339 = cos(r75338);
double r75340 = r75333 * r75339;
double r75341 = r75324 + r75340;
return r75341;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
rmApplied associate-*l/0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019174
(FPCore (u1 u2)
:name "normal distribution"
:pre (and (<= 0.0 u1 1.0) (<= 0.0 u2 1.0))
(+ (* (* (/ 1.0 6.0) (pow (* -2.0 (log u1)) 0.5)) (cos (* (* 2.0 PI) u2))) 0.5))