\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\frac{\frac{\cos \left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}{6} \cdot \left(\cos \left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot \left(\frac{{\left(-2 \cdot \log u1\right)}^{0.5}}{6} \cdot \frac{\cos \left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}{6}\right)\right) + 0.5 \cdot \left(0.5 \cdot 0.5\right)}{\left(0.5 - \frac{\cos \left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}{6}\right) \cdot 0.5 + \frac{\cos \left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}{6} \cdot \frac{\cos \left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}{6}}double f(double u1, double u2) {
double r1812077 = 1.0;
double r1812078 = 6.0;
double r1812079 = r1812077 / r1812078;
double r1812080 = -2.0;
double r1812081 = u1;
double r1812082 = log(r1812081);
double r1812083 = r1812080 * r1812082;
double r1812084 = 0.5;
double r1812085 = pow(r1812083, r1812084);
double r1812086 = r1812079 * r1812085;
double r1812087 = 2.0;
double r1812088 = atan2(1.0, 0.0);
double r1812089 = r1812087 * r1812088;
double r1812090 = u2;
double r1812091 = r1812089 * r1812090;
double r1812092 = cos(r1812091);
double r1812093 = r1812086 * r1812092;
double r1812094 = r1812093 + r1812084;
return r1812094;
}
double f(double u1, double u2) {
double r1812095 = atan2(1.0, 0.0);
double r1812096 = u2;
double r1812097 = r1812095 * r1812096;
double r1812098 = 2.0;
double r1812099 = r1812097 * r1812098;
double r1812100 = cos(r1812099);
double r1812101 = -2.0;
double r1812102 = u1;
double r1812103 = log(r1812102);
double r1812104 = r1812101 * r1812103;
double r1812105 = 0.5;
double r1812106 = pow(r1812104, r1812105);
double r1812107 = r1812100 * r1812106;
double r1812108 = 6.0;
double r1812109 = r1812107 / r1812108;
double r1812110 = r1812106 / r1812108;
double r1812111 = r1812110 * r1812109;
double r1812112 = r1812100 * r1812111;
double r1812113 = r1812109 * r1812112;
double r1812114 = r1812105 * r1812105;
double r1812115 = r1812105 * r1812114;
double r1812116 = r1812113 + r1812115;
double r1812117 = r1812105 - r1812109;
double r1812118 = r1812117 * r1812105;
double r1812119 = r1812109 * r1812109;
double r1812120 = r1812118 + r1812119;
double r1812121 = r1812116 / r1812120;
return r1812121;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
rmApplied flip3-+0.6
Simplified0.8
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-*l*0.4
Final simplification0.4
herbie shell --seed 2019130
(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))