\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{1 \cdot {\left(\log u1 \cdot -2\right)}^{0.5}}{6} \cdot \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) + 0.5double f(double u1, double u2) {
double r3133168 = 1.0;
double r3133169 = 6.0;
double r3133170 = r3133168 / r3133169;
double r3133171 = -2.0;
double r3133172 = u1;
double r3133173 = log(r3133172);
double r3133174 = r3133171 * r3133173;
double r3133175 = 0.5;
double r3133176 = pow(r3133174, r3133175);
double r3133177 = r3133170 * r3133176;
double r3133178 = 2.0;
double r3133179 = atan2(1.0, 0.0);
double r3133180 = r3133178 * r3133179;
double r3133181 = u2;
double r3133182 = r3133180 * r3133181;
double r3133183 = cos(r3133182);
double r3133184 = r3133177 * r3133183;
double r3133185 = r3133184 + r3133175;
return r3133185;
}
double f(double u1, double u2) {
double r3133186 = 1.0;
double r3133187 = u1;
double r3133188 = log(r3133187);
double r3133189 = -2.0;
double r3133190 = r3133188 * r3133189;
double r3133191 = 0.5;
double r3133192 = pow(r3133190, r3133191);
double r3133193 = r3133186 * r3133192;
double r3133194 = 6.0;
double r3133195 = r3133193 / r3133194;
double r3133196 = u2;
double r3133197 = 2.0;
double r3133198 = atan2(1.0, 0.0);
double r3133199 = r3133197 * r3133198;
double r3133200 = r3133196 * r3133199;
double r3133201 = cos(r3133200);
double r3133202 = r3133195 * r3133201;
double r3133203 = r3133202 + r3133191;
return r3133203;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
rmApplied associate-*l/0.3
Final simplification0.3
herbie shell --seed 2019168
(FPCore (u1 u2)
:name "normal distribution"
:pre (and (<= 0.0 u1 1.0) (<= 0.0 u2 1.0))
(+ (* (* (/ 1.0 6.0) (pow (* -2.0 (log u1)) 0.5)) (cos (* (* 2.0 PI) u2))) 0.5))