Average Error: 0.4 → 0.4
Time: 44.0s
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\]
\[\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}\]
\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;
}

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 flip-+0.4

    \[\leadsto \color{blue}{\frac{\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) \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) - 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}}\]
  4. Using strategy rm
  5. Applied associate-*l/0.4

    \[\leadsto \frac{\left(\color{blue}{\frac{1 \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}{6}} \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) - 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}\]
  6. Applied associate-*l/0.4

    \[\leadsto \frac{\color{blue}{\frac{\left(1 \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)}{6}} \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) - 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}\]
  7. Applied associate-*l/0.4

    \[\leadsto \frac{\color{blue}{\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}\]
  8. Final simplification0.4

    \[\leadsto \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}\]

Reproduce

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))