\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{\left(\left(\frac{1}{6} \cdot \cos \left(2 \cdot \left(\pi \cdot u2\right)\right)\right) \cdot {\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)}^{0.5}\right) \cdot \left(\left(\frac{1}{6} \cdot \cos \left(2 \cdot \left(\pi \cdot u2\right)\right)\right) \cdot {\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)}^{0.5}\right) - 0.5 \cdot 0.5}{\left(\frac{1}{6} \cdot \cos \left(2 \cdot \left(\pi \cdot u2\right)\right)\right) \cdot {\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)}^{0.5} - 0.5}double f(double u1, double u2) {
double r3082079 = 1.0;
double r3082080 = 6.0;
double r3082081 = r3082079 / r3082080;
double r3082082 = -2.0;
double r3082083 = u1;
double r3082084 = log(r3082083);
double r3082085 = r3082082 * r3082084;
double r3082086 = 0.5;
double r3082087 = pow(r3082085, r3082086);
double r3082088 = r3082081 * r3082087;
double r3082089 = 2.0;
double r3082090 = atan2(1.0, 0.0);
double r3082091 = r3082089 * r3082090;
double r3082092 = u2;
double r3082093 = r3082091 * r3082092;
double r3082094 = cos(r3082093);
double r3082095 = r3082088 * r3082094;
double r3082096 = r3082095 + r3082086;
return r3082096;
}
double f(double u1, double u2) {
double r3082097 = 0.16666666666666666;
double r3082098 = 2.0;
double r3082099 = atan2(1.0, 0.0);
double r3082100 = u2;
double r3082101 = r3082099 * r3082100;
double r3082102 = r3082098 * r3082101;
double r3082103 = cos(r3082102);
double r3082104 = r3082097 * r3082103;
double r3082105 = u1;
double r3082106 = log(r3082105);
double r3082107 = 1.0;
double r3082108 = pow(r3082106, r3082107);
double r3082109 = -2.0;
double r3082110 = pow(r3082109, r3082107);
double r3082111 = r3082108 * r3082110;
double r3082112 = 0.5;
double r3082113 = pow(r3082111, r3082112);
double r3082114 = r3082104 * r3082113;
double r3082115 = r3082114 * r3082114;
double r3082116 = r3082112 * r3082112;
double r3082117 = r3082115 - r3082116;
double r3082118 = r3082114 - r3082112;
double r3082119 = r3082117 / r3082118;
return r3082119;
}



Bits error versus u1



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