\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({-2}^{1.0} \cdot {\left(\log u1\right)}^{1.0}\right)}^{0.5} \cdot \left(\frac{1}{6} \cdot \cos \left(\pi \cdot \left(u2 \cdot 2\right)\right)\right) + 0.5double f(double u1, double u2) {
double r29392756 = 1.0;
double r29392757 = 6.0;
double r29392758 = r29392756 / r29392757;
double r29392759 = -2.0;
double r29392760 = u1;
double r29392761 = log(r29392760);
double r29392762 = r29392759 * r29392761;
double r29392763 = 0.5;
double r29392764 = pow(r29392762, r29392763);
double r29392765 = r29392758 * r29392764;
double r29392766 = 2.0;
double r29392767 = atan2(1.0, 0.0);
double r29392768 = r29392766 * r29392767;
double r29392769 = u2;
double r29392770 = r29392768 * r29392769;
double r29392771 = cos(r29392770);
double r29392772 = r29392765 * r29392771;
double r29392773 = r29392772 + r29392763;
return r29392773;
}
double f(double u1, double u2) {
double r29392774 = -2.0;
double r29392775 = 1.0;
double r29392776 = pow(r29392774, r29392775);
double r29392777 = u1;
double r29392778 = log(r29392777);
double r29392779 = pow(r29392778, r29392775);
double r29392780 = r29392776 * r29392779;
double r29392781 = 0.5;
double r29392782 = pow(r29392780, r29392781);
double r29392783 = 0.16666666666666666;
double r29392784 = atan2(1.0, 0.0);
double r29392785 = u2;
double r29392786 = 2.0;
double r29392787 = r29392785 * r29392786;
double r29392788 = r29392784 * r29392787;
double r29392789 = cos(r29392788);
double r29392790 = r29392783 * r29392789;
double r29392791 = r29392782 * r29392790;
double r29392792 = r29392791 + r29392781;
return r29392792;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
Simplified0.4
Taylor expanded around -inf 62.0
Simplified0.4
Final simplification0.4
herbie shell --seed 2019120
(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))