\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{0.5 \cdot 0.5 - \left(\left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right) \cdot \left(\left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right)}{0.5 - \left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}}double f(double u1, double u2) {
double r2198253 = 1.0;
double r2198254 = 6.0;
double r2198255 = r2198253 / r2198254;
double r2198256 = -2.0;
double r2198257 = u1;
double r2198258 = log(r2198257);
double r2198259 = r2198256 * r2198258;
double r2198260 = 0.5;
double r2198261 = pow(r2198259, r2198260);
double r2198262 = r2198255 * r2198261;
double r2198263 = 2.0;
double r2198264 = atan2(1.0, 0.0);
double r2198265 = r2198263 * r2198264;
double r2198266 = u2;
double r2198267 = r2198265 * r2198266;
double r2198268 = cos(r2198267);
double r2198269 = r2198262 * r2198268;
double r2198270 = r2198269 + r2198260;
return r2198270;
}
double f(double u1, double u2) {
double r2198271 = 0.5;
double r2198272 = r2198271 * r2198271;
double r2198273 = 0.16666666666666666;
double r2198274 = 2.0;
double r2198275 = atan2(1.0, 0.0);
double r2198276 = r2198274 * r2198275;
double r2198277 = u2;
double r2198278 = r2198276 * r2198277;
double r2198279 = cos(r2198278);
double r2198280 = r2198273 * r2198279;
double r2198281 = u1;
double r2198282 = log(r2198281);
double r2198283 = -2.0;
double r2198284 = r2198282 * r2198283;
double r2198285 = pow(r2198284, r2198271);
double r2198286 = r2198280 * r2198285;
double r2198287 = r2198286 * r2198286;
double r2198288 = r2198272 - r2198287;
double r2198289 = r2198271 - r2198286;
double r2198290 = r2198288 / r2198289;
return r2198290;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
Simplified0.4
rmApplied flip-+0.4
Final simplification0.4
herbie shell --seed 2019133
(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))