\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\mathsf{fma}\left(\frac{1 \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}{6}, \cos \left(\left(2 \cdot \pi\right) \cdot u2\right), 0.5\right)double f(double u1, double u2) {
double r74095 = 1.0;
double r74096 = 6.0;
double r74097 = r74095 / r74096;
double r74098 = -2.0;
double r74099 = u1;
double r74100 = log(r74099);
double r74101 = r74098 * r74100;
double r74102 = 0.5;
double r74103 = pow(r74101, r74102);
double r74104 = r74097 * r74103;
double r74105 = 2.0;
double r74106 = atan2(1.0, 0.0);
double r74107 = r74105 * r74106;
double r74108 = u2;
double r74109 = r74107 * r74108;
double r74110 = cos(r74109);
double r74111 = r74104 * r74110;
double r74112 = r74111 + r74102;
return r74112;
}
double f(double u1, double u2) {
double r74113 = 1.0;
double r74114 = -2.0;
double r74115 = u1;
double r74116 = log(r74115);
double r74117 = r74114 * r74116;
double r74118 = 0.5;
double r74119 = pow(r74117, r74118);
double r74120 = r74113 * r74119;
double r74121 = 6.0;
double r74122 = r74120 / r74121;
double r74123 = 2.0;
double r74124 = atan2(1.0, 0.0);
double r74125 = r74123 * r74124;
double r74126 = u2;
double r74127 = r74125 * r74126;
double r74128 = cos(r74127);
double r74129 = fma(r74122, r74128, r74118);
return r74129;
}



Bits error versus u1



Bits error versus u2
Initial program 0.4
Simplified0.4
rmApplied associate-*l/0.3
Final simplification0.3
herbie shell --seed 2020046 +o rules:numerics
(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))