\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{\frac{\left(\left(1 \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot \left(\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)\right)}{6} - 0.5 \cdot 0.5}{\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}double f(double u1, double u2) {
double r3996839 = 1.0;
double r3996840 = 6.0;
double r3996841 = r3996839 / r3996840;
double r3996842 = -2.0;
double r3996843 = u1;
double r3996844 = log(r3996843);
double r3996845 = r3996842 * r3996844;
double r3996846 = 0.5;
double r3996847 = pow(r3996845, r3996846);
double r3996848 = r3996841 * r3996847;
double r3996849 = 2.0;
double r3996850 = atan2(1.0, 0.0);
double r3996851 = r3996849 * r3996850;
double r3996852 = u2;
double r3996853 = r3996851 * r3996852;
double r3996854 = cos(r3996853);
double r3996855 = r3996848 * r3996854;
double r3996856 = r3996855 + r3996846;
return r3996856;
}
double f(double u1, double u2) {
double r3996857 = 1.0;
double r3996858 = -2.0;
double r3996859 = u1;
double r3996860 = log(r3996859);
double r3996861 = r3996858 * r3996860;
double r3996862 = 0.5;
double r3996863 = pow(r3996861, r3996862);
double r3996864 = r3996857 * r3996863;
double r3996865 = 2.0;
double r3996866 = atan2(1.0, 0.0);
double r3996867 = r3996865 * r3996866;
double r3996868 = u2;
double r3996869 = r3996867 * r3996868;
double r3996870 = cos(r3996869);
double r3996871 = r3996864 * r3996870;
double r3996872 = 6.0;
double r3996873 = r3996857 / r3996872;
double r3996874 = r3996873 * r3996863;
double r3996875 = r3996874 * r3996870;
double r3996876 = r3996871 * r3996875;
double r3996877 = r3996876 / r3996872;
double r3996878 = r3996862 * r3996862;
double r3996879 = r3996877 - r3996878;
double r3996880 = r3996875 - r3996862;
double r3996881 = r3996879 / r3996880;
return r3996881;
}



Bits error versus u1



Bits error versus u2
Results
Initial program 0.4
rmApplied flip-+0.4
rmApplied associate-*l/0.4
Applied associate-*l/0.4
Applied associate-*l/0.4
Final simplification0.4
herbie shell --seed 2019174
(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))