Average Error: 0.4 → 0.4
Time: 10.6s
Precision: 64
\[0.0 \le u1 \le 1 \land 0.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\]
\[\left(1 \cdot \frac{1}{\frac{6}{{\left(-2 \cdot \log u1\right)}^{0.5}}}\right) \cdot \cos \left(\left(\sqrt[3]{\left(2 \cdot \pi\right) \cdot u2} \cdot \sqrt[3]{\left(2 \cdot \pi\right) \cdot u2}\right) \cdot \sqrt[3]{\left(2 \cdot \pi\right) \cdot u2}\right) + 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
\left(1 \cdot \frac{1}{\frac{6}{{\left(-2 \cdot \log u1\right)}^{0.5}}}\right) \cdot \cos \left(\left(\sqrt[3]{\left(2 \cdot \pi\right) \cdot u2} \cdot \sqrt[3]{\left(2 \cdot \pi\right) \cdot u2}\right) \cdot \sqrt[3]{\left(2 \cdot \pi\right) \cdot u2}\right) + 0.5
double f(double u1, double u2) {
        double r57871 = 1.0;
        double r57872 = 6.0;
        double r57873 = r57871 / r57872;
        double r57874 = -2.0;
        double r57875 = u1;
        double r57876 = log(r57875);
        double r57877 = r57874 * r57876;
        double r57878 = 0.5;
        double r57879 = pow(r57877, r57878);
        double r57880 = r57873 * r57879;
        double r57881 = 2.0;
        double r57882 = atan2(1.0, 0.0);
        double r57883 = r57881 * r57882;
        double r57884 = u2;
        double r57885 = r57883 * r57884;
        double r57886 = cos(r57885);
        double r57887 = r57880 * r57886;
        double r57888 = r57887 + r57878;
        return r57888;
}

double f(double u1, double u2) {
        double r57889 = 1.0;
        double r57890 = 1.0;
        double r57891 = 6.0;
        double r57892 = -2.0;
        double r57893 = u1;
        double r57894 = log(r57893);
        double r57895 = r57892 * r57894;
        double r57896 = 0.5;
        double r57897 = pow(r57895, r57896);
        double r57898 = r57891 / r57897;
        double r57899 = r57890 / r57898;
        double r57900 = r57889 * r57899;
        double r57901 = 2.0;
        double r57902 = atan2(1.0, 0.0);
        double r57903 = r57901 * r57902;
        double r57904 = u2;
        double r57905 = r57903 * r57904;
        double r57906 = cbrt(r57905);
        double r57907 = r57906 * r57906;
        double r57908 = r57907 * r57906;
        double r57909 = cos(r57908);
        double r57910 = r57900 * r57909;
        double r57911 = r57910 + r57896;
        return r57911;
}

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. Using strategy rm
  3. Applied div-inv0.4

    \[\leadsto \left(\color{blue}{\left(1 \cdot \frac{1}{6}\right)} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right) + 0.5\]
  4. Applied associate-*l*0.4

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

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

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

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

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

Reproduce

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