\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(-2 \cdot \log u1\right)}^{0.5}}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right) + 0.5double f(double u1, double u2) {
double r61162 = 1.0;
double r61163 = 6.0;
double r61164 = r61162 / r61163;
double r61165 = -2.0;
double r61166 = u1;
double r61167 = log(r61166);
double r61168 = r61165 * r61167;
double r61169 = 0.5;
double r61170 = pow(r61168, r61169);
double r61171 = r61164 * r61170;
double r61172 = 2.0;
double r61173 = atan2(1.0, 0.0);
double r61174 = r61172 * r61173;
double r61175 = u2;
double r61176 = r61174 * r61175;
double r61177 = cos(r61176);
double r61178 = r61171 * r61177;
double r61179 = r61178 + r61169;
return r61179;
}
double f(double u1, double u2) {
double r61180 = 1.0;
double r61181 = -2.0;
double r61182 = u1;
double r61183 = log(r61182);
double r61184 = r61181 * r61183;
double r61185 = 0.5;
double r61186 = pow(r61184, r61185);
double r61187 = r61180 * r61186;
double r61188 = 6.0;
double r61189 = r61187 / r61188;
double r61190 = 2.0;
double r61191 = atan2(1.0, 0.0);
double r61192 = r61190 * r61191;
double r61193 = u2;
double r61194 = r61192 * r61193;
double r61195 = cos(r61194);
double r61196 = r61189 * r61195;
double r61197 = r61196 + r61185;
return r61197;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
rmApplied associate-*l/0.3
Final simplification0.3
herbie shell --seed 2020039
(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))