\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(1 \cdot \frac{{\left(-2 \cdot \log u1\right)}^{0.5}}{6}\right) \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right) + 0.5double f(double u1, double u2) {
double r73898 = 1.0;
double r73899 = 6.0;
double r73900 = r73898 / r73899;
double r73901 = -2.0;
double r73902 = u1;
double r73903 = log(r73902);
double r73904 = r73901 * r73903;
double r73905 = 0.5;
double r73906 = pow(r73904, r73905);
double r73907 = r73900 * r73906;
double r73908 = 2.0;
double r73909 = atan2(1.0, 0.0);
double r73910 = r73908 * r73909;
double r73911 = u2;
double r73912 = r73910 * r73911;
double r73913 = cos(r73912);
double r73914 = r73907 * r73913;
double r73915 = r73914 + r73905;
return r73915;
}
double f(double u1, double u2) {
double r73916 = 1.0;
double r73917 = -2.0;
double r73918 = u1;
double r73919 = log(r73918);
double r73920 = r73917 * r73919;
double r73921 = 0.5;
double r73922 = pow(r73920, r73921);
double r73923 = 6.0;
double r73924 = r73922 / r73923;
double r73925 = r73916 * r73924;
double r73926 = 2.0;
double r73927 = atan2(1.0, 0.0);
double r73928 = r73926 * r73927;
double r73929 = u2;
double r73930 = r73928 * r73929;
double r73931 = cos(r73930);
double r73932 = r73925 * r73931;
double r73933 = r73932 + r73921;
return r73933;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
rmApplied div-inv0.4
Applied associate-*l*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020003
(FPCore (u1 u2)
:name "normal distribution"
:precision binary64
:pre (and (<= 0.0 u1 1) (<= 0.0 u2 1))
(+ (* (* (/ 1 6) (pow (* -2 (log u1)) 0.5)) (cos (* (* 2 PI) u2))) 0.5))