Average Error: 0.4 → 0.4
Time: 3.5m
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\]
\[{\left({-2}^{1.0} \cdot {\left(\log u1\right)}^{1.0}\right)}^{0.5} \cdot \left(\frac{1}{6} \cdot \cos \left(\pi \cdot \left(u2 \cdot 2\right)\right)\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({-2}^{1.0} \cdot {\left(\log u1\right)}^{1.0}\right)}^{0.5} \cdot \left(\frac{1}{6} \cdot \cos \left(\pi \cdot \left(u2 \cdot 2\right)\right)\right) + 0.5
double f(double u1, double u2) {
        double r29392756 = 1.0;
        double r29392757 = 6.0;
        double r29392758 = r29392756 / r29392757;
        double r29392759 = -2.0;
        double r29392760 = u1;
        double r29392761 = log(r29392760);
        double r29392762 = r29392759 * r29392761;
        double r29392763 = 0.5;
        double r29392764 = pow(r29392762, r29392763);
        double r29392765 = r29392758 * r29392764;
        double r29392766 = 2.0;
        double r29392767 = atan2(1.0, 0.0);
        double r29392768 = r29392766 * r29392767;
        double r29392769 = u2;
        double r29392770 = r29392768 * r29392769;
        double r29392771 = cos(r29392770);
        double r29392772 = r29392765 * r29392771;
        double r29392773 = r29392772 + r29392763;
        return r29392773;
}

double f(double u1, double u2) {
        double r29392774 = -2.0;
        double r29392775 = 1.0;
        double r29392776 = pow(r29392774, r29392775);
        double r29392777 = u1;
        double r29392778 = log(r29392777);
        double r29392779 = pow(r29392778, r29392775);
        double r29392780 = r29392776 * r29392779;
        double r29392781 = 0.5;
        double r29392782 = pow(r29392780, r29392781);
        double r29392783 = 0.16666666666666666;
        double r29392784 = atan2(1.0, 0.0);
        double r29392785 = u2;
        double r29392786 = 2.0;
        double r29392787 = r29392785 * r29392786;
        double r29392788 = r29392784 * r29392787;
        double r29392789 = cos(r29392788);
        double r29392790 = r29392783 * r29392789;
        double r29392791 = r29392782 * r29392790;
        double r29392792 = r29392791 + r29392781;
        return r29392792;
}

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 + \frac{\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}\]
  3. Taylor expanded around -inf 62.0

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

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

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

Reproduce

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