\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\mathsf{fma}\left(\sqrt{\frac{1}{\frac{6}{1}}} \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \sqrt{\frac{1}{\frac{6}{1}}}\right), \cos \left(2 \cdot \left(\pi \cdot u2\right)\right), 0.5\right)double f(double u1, double u2) {
double r1600379 = 1.0;
double r1600380 = 6.0;
double r1600381 = r1600379 / r1600380;
double r1600382 = -2.0;
double r1600383 = u1;
double r1600384 = log(r1600383);
double r1600385 = r1600382 * r1600384;
double r1600386 = 0.5;
double r1600387 = pow(r1600385, r1600386);
double r1600388 = r1600381 * r1600387;
double r1600389 = 2.0;
double r1600390 = atan2(1.0, 0.0);
double r1600391 = r1600389 * r1600390;
double r1600392 = u2;
double r1600393 = r1600391 * r1600392;
double r1600394 = cos(r1600393);
double r1600395 = r1600388 * r1600394;
double r1600396 = r1600395 + r1600386;
return r1600396;
}
double f(double u1, double u2) {
double r1600397 = 1.0;
double r1600398 = 6.0;
double r1600399 = 1.0;
double r1600400 = r1600398 / r1600399;
double r1600401 = r1600397 / r1600400;
double r1600402 = sqrt(r1600401);
double r1600403 = -2.0;
double r1600404 = u1;
double r1600405 = log(r1600404);
double r1600406 = r1600403 * r1600405;
double r1600407 = 0.5;
double r1600408 = pow(r1600406, r1600407);
double r1600409 = r1600408 * r1600402;
double r1600410 = r1600402 * r1600409;
double r1600411 = 2.0;
double r1600412 = atan2(1.0, 0.0);
double r1600413 = u2;
double r1600414 = r1600412 * r1600413;
double r1600415 = r1600411 * r1600414;
double r1600416 = cos(r1600415);
double r1600417 = fma(r1600410, r1600416, r1600407);
return r1600417;
}



Bits error versus u1



Bits error versus u2
Initial program 0.4
Simplified0.3
rmApplied div-inv0.4
rmApplied add-sqr-sqrt0.4
Applied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2019192 +o rules:numerics
(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))