Average Error: 0.4 → 0.4
Time: 36.0s
Precision: 64
\[0 \le u1 \le 1 \land 0 \le u2 \le 1\]
\[\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{0.5 \cdot 0.5 - \left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)\right) \cdot \left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)\right)}{0.5 - \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)}\]
\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{0.5 \cdot 0.5 - \left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)\right) \cdot \left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)\right)}{0.5 - \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)}
double f(double u1, double u2) {
        double r1939871 = 1.0;
        double r1939872 = 6.0;
        double r1939873 = r1939871 / r1939872;
        double r1939874 = -2.0;
        double r1939875 = u1;
        double r1939876 = log(r1939875);
        double r1939877 = r1939874 * r1939876;
        double r1939878 = 0.5;
        double r1939879 = pow(r1939877, r1939878);
        double r1939880 = r1939873 * r1939879;
        double r1939881 = 2.0;
        double r1939882 = atan2(1.0, 0.0);
        double r1939883 = r1939881 * r1939882;
        double r1939884 = u2;
        double r1939885 = r1939883 * r1939884;
        double r1939886 = cos(r1939885);
        double r1939887 = r1939880 * r1939886;
        double r1939888 = r1939887 + r1939878;
        return r1939888;
}

double f(double u1, double u2) {
        double r1939889 = 0.5;
        double r1939890 = r1939889 * r1939889;
        double r1939891 = u2;
        double r1939892 = 2.0;
        double r1939893 = atan2(1.0, 0.0);
        double r1939894 = r1939892 * r1939893;
        double r1939895 = r1939891 * r1939894;
        double r1939896 = cos(r1939895);
        double r1939897 = -2.0;
        double r1939898 = u1;
        double r1939899 = log(r1939898);
        double r1939900 = r1939897 * r1939899;
        double r1939901 = pow(r1939900, r1939889);
        double r1939902 = 0.16666666666666666;
        double r1939903 = r1939901 * r1939902;
        double r1939904 = r1939896 * r1939903;
        double r1939905 = r1939904 * r1939904;
        double r1939906 = r1939890 - r1939905;
        double r1939907 = r1939889 - r1939904;
        double r1939908 = r1939906 / r1939907;
        return r1939908;
}

Error

Bits error versus u1

Bits error versus u2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.4

    \[\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\]
  2. Simplified0.4

    \[\leadsto \color{blue}{0.5 + \left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)}\]
  3. Using strategy rm
  4. Applied flip-+0.4

    \[\leadsto \color{blue}{\frac{0.5 \cdot 0.5 - \left(\left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right) \cdot \left(\left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right)}{0.5 - \left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)}}\]
  5. Final simplification0.4

    \[\leadsto \frac{0.5 \cdot 0.5 - \left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)\right) \cdot \left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)\right)}{0.5 - \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right) \cdot \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right)}\]

Reproduce

herbie shell --seed 2019135 
(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))