\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.5\left(\sqrt{\frac{1}{6}} \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \sqrt{\frac{1}{6}}\right)\right) \cdot \cos \left(\pi \cdot \left(2 \cdot u2\right)\right) + 0.5double f(double u1, double u2) {
double r4752302 = 1.0;
double r4752303 = 6.0;
double r4752304 = r4752302 / r4752303;
double r4752305 = -2.0;
double r4752306 = u1;
double r4752307 = log(r4752306);
double r4752308 = r4752305 * r4752307;
double r4752309 = 0.5;
double r4752310 = pow(r4752308, r4752309);
double r4752311 = r4752304 * r4752310;
double r4752312 = 2.0;
double r4752313 = atan2(1.0, 0.0);
double r4752314 = r4752312 * r4752313;
double r4752315 = u2;
double r4752316 = r4752314 * r4752315;
double r4752317 = cos(r4752316);
double r4752318 = r4752311 * r4752317;
double r4752319 = r4752318 + r4752309;
return r4752319;
}
double f(double u1, double u2) {
double r4752320 = 0.16666666666666666;
double r4752321 = sqrt(r4752320);
double r4752322 = -2.0;
double r4752323 = u1;
double r4752324 = log(r4752323);
double r4752325 = r4752322 * r4752324;
double r4752326 = 0.5;
double r4752327 = pow(r4752325, r4752326);
double r4752328 = r4752327 * r4752321;
double r4752329 = r4752321 * r4752328;
double r4752330 = atan2(1.0, 0.0);
double r4752331 = 2.0;
double r4752332 = u2;
double r4752333 = r4752331 * r4752332;
double r4752334 = r4752330 * r4752333;
double r4752335 = cos(r4752334);
double r4752336 = r4752329 * r4752335;
double r4752337 = r4752336 + r4752326;
return r4752337;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
Simplified0.4
rmApplied add-sqr-sqrt0.4
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019124
(FPCore (u1 u2)
:name "normal distribution"
:pre (and (<= 0 u1 1) (<= 0 u2 1))
(+ (* (* (/ 1 6) (pow (* -2 (log u1)) 0.5)) (cos (* (* 2 PI) u2))) 0.5))