\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(\left(\cos \left(\left(\pi \cdot 2\right) \cdot u2\right)\right), \left(\frac{\frac{1}{6}}{{\left(\sqrt[3]{\frac{1}{\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right) \cdot \left(\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right) \cdot \left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)\right)}}\right)}^{0.5}}\right), 0.5\right)double f(double u1, double u2) {
double r25841356 = 1.0;
double r25841357 = 6.0;
double r25841358 = r25841356 / r25841357;
double r25841359 = -2.0;
double r25841360 = u1;
double r25841361 = log(r25841360);
double r25841362 = r25841359 * r25841361;
double r25841363 = 0.5;
double r25841364 = pow(r25841362, r25841363);
double r25841365 = r25841358 * r25841364;
double r25841366 = 2.0;
double r25841367 = atan2(1.0, 0.0);
double r25841368 = r25841366 * r25841367;
double r25841369 = u2;
double r25841370 = r25841368 * r25841369;
double r25841371 = cos(r25841370);
double r25841372 = r25841365 * r25841371;
double r25841373 = r25841372 + r25841363;
return r25841373;
}
double f(double u1, double u2) {
double r25841374 = atan2(1.0, 0.0);
double r25841375 = 2.0;
double r25841376 = r25841374 * r25841375;
double r25841377 = u2;
double r25841378 = r25841376 * r25841377;
double r25841379 = cos(r25841378);
double r25841380 = 0.16666666666666666;
double r25841381 = 1.0;
double r25841382 = u1;
double r25841383 = log(r25841382);
double r25841384 = 1.0;
double r25841385 = pow(r25841383, r25841384);
double r25841386 = -2.0;
double r25841387 = pow(r25841386, r25841384);
double r25841388 = r25841385 * r25841387;
double r25841389 = r25841388 * r25841388;
double r25841390 = r25841388 * r25841389;
double r25841391 = r25841381 / r25841390;
double r25841392 = cbrt(r25841391);
double r25841393 = 0.5;
double r25841394 = pow(r25841392, r25841393);
double r25841395 = r25841380 / r25841394;
double r25841396 = fma(r25841379, r25841395, r25841393);
return r25841396;
}



Bits error versus u1



Bits error versus u2
Initial program 0.4
Simplified0.3
rmApplied *-un-lft-identity0.3
Applied associate-/l*0.3
Taylor expanded around 0 0.4
rmApplied associate-/r*0.4
rmApplied add-cbrt-cube0.4
Applied add-cbrt-cube0.4
Applied cbrt-unprod0.4
Applied add-cbrt-cube0.4
Applied cbrt-undiv0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019107 +o rules:numerics
(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))