\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\sqrt[3]{\left(\left({\left(\log u1 \cdot -2\right)}^{0.5} \cdot \left(\cos \left(2 \cdot \left(\pi \cdot u2\right)\right) \cdot \frac{1}{6}\right)\right) \cdot \left({\left(\log u1 \cdot -2\right)}^{0.5} \cdot \left(\cos \left(2 \cdot \left(\pi \cdot u2\right)\right) \cdot \frac{1}{6}\right)\right)\right) \cdot \sqrt[3]{\left(\left({\left(\log u1 \cdot -2\right)}^{0.5} \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right) \cdot \left(\left(\left(\cos \left(2 \cdot \left(\pi \cdot u2\right)\right) \cdot \frac{1}{6}\right) \cdot \left(\cos \left(2 \cdot \left(\pi \cdot u2\right)\right) \cdot \frac{1}{6}\right)\right) \cdot \left(\cos \left(2 \cdot \left(\pi \cdot u2\right)\right) \cdot \frac{1}{6}\right)\right)}} + 0.5double f(double u1, double u2) {
double r1864286 = 1.0;
double r1864287 = 6.0;
double r1864288 = r1864286 / r1864287;
double r1864289 = -2.0;
double r1864290 = u1;
double r1864291 = log(r1864290);
double r1864292 = r1864289 * r1864291;
double r1864293 = 0.5;
double r1864294 = pow(r1864292, r1864293);
double r1864295 = r1864288 * r1864294;
double r1864296 = 2.0;
double r1864297 = atan2(1.0, 0.0);
double r1864298 = r1864296 * r1864297;
double r1864299 = u2;
double r1864300 = r1864298 * r1864299;
double r1864301 = cos(r1864300);
double r1864302 = r1864295 * r1864301;
double r1864303 = r1864302 + r1864293;
return r1864303;
}
double f(double u1, double u2) {
double r1864304 = u1;
double r1864305 = log(r1864304);
double r1864306 = -2.0;
double r1864307 = r1864305 * r1864306;
double r1864308 = 0.5;
double r1864309 = pow(r1864307, r1864308);
double r1864310 = 2.0;
double r1864311 = atan2(1.0, 0.0);
double r1864312 = u2;
double r1864313 = r1864311 * r1864312;
double r1864314 = r1864310 * r1864313;
double r1864315 = cos(r1864314);
double r1864316 = 0.16666666666666666;
double r1864317 = r1864315 * r1864316;
double r1864318 = r1864309 * r1864317;
double r1864319 = r1864318 * r1864318;
double r1864320 = r1864309 * r1864309;
double r1864321 = r1864320 * r1864309;
double r1864322 = r1864317 * r1864317;
double r1864323 = r1864322 * r1864317;
double r1864324 = r1864321 * r1864323;
double r1864325 = cbrt(r1864324);
double r1864326 = r1864319 * r1864325;
double r1864327 = cbrt(r1864326);
double r1864328 = r1864327 + r1864308;
return r1864328;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
Simplified0.4
rmApplied add-cbrt-cube0.4
Applied add-cbrt-cube0.6
Applied add-cbrt-cube0.6
Applied cbrt-unprod0.6
Applied cbrt-unprod0.5
Simplified0.6
rmApplied add-cbrt-cube0.6
Applied add-cbrt-cube0.6
Applied cbrt-unprod0.5
Final simplification0.5
herbie shell --seed 2019165
(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))