Average Error: 0.4 → 0.4
Time: 4.6m
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\]
\[\mathsf{fma}\left(\left(\cos \left(\left(\pi \cdot 2\right) \cdot u2\right)\right), \left(\frac{\frac{1}{6}}{{\left(\sqrt[3]{\frac{1}{\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right) \cdot \left(\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right) \cdot \left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)\right)}}\right)}^{0.5}}\right), 0.5\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
\mathsf{fma}\left(\left(\cos \left(\left(\pi \cdot 2\right) \cdot u2\right)\right), \left(\frac{\frac{1}{6}}{{\left(\sqrt[3]{\frac{1}{\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right) \cdot \left(\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right) \cdot \left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)\right)}}\right)}^{0.5}}\right), 0.5\right)
double f(double u1, double u2) {
        double r25841356 = 1.0;
        double r25841357 = 6.0;
        double r25841358 = r25841356 / r25841357;
        double r25841359 = -2.0;
        double r25841360 = u1;
        double r25841361 = log(r25841360);
        double r25841362 = r25841359 * r25841361;
        double r25841363 = 0.5;
        double r25841364 = pow(r25841362, r25841363);
        double r25841365 = r25841358 * r25841364;
        double r25841366 = 2.0;
        double r25841367 = atan2(1.0, 0.0);
        double r25841368 = r25841366 * r25841367;
        double r25841369 = u2;
        double r25841370 = r25841368 * r25841369;
        double r25841371 = cos(r25841370);
        double r25841372 = r25841365 * r25841371;
        double r25841373 = r25841372 + r25841363;
        return r25841373;
}

double f(double u1, double u2) {
        double r25841374 = atan2(1.0, 0.0);
        double r25841375 = 2.0;
        double r25841376 = r25841374 * r25841375;
        double r25841377 = u2;
        double r25841378 = r25841376 * r25841377;
        double r25841379 = cos(r25841378);
        double r25841380 = 0.16666666666666666;
        double r25841381 = 1.0;
        double r25841382 = u1;
        double r25841383 = log(r25841382);
        double r25841384 = 1.0;
        double r25841385 = pow(r25841383, r25841384);
        double r25841386 = -2.0;
        double r25841387 = pow(r25841386, r25841384);
        double r25841388 = r25841385 * r25841387;
        double r25841389 = r25841388 * r25841388;
        double r25841390 = r25841388 * r25841389;
        double r25841391 = r25841381 / r25841390;
        double r25841392 = cbrt(r25841391);
        double r25841393 = 0.5;
        double r25841394 = pow(r25841392, r25841393);
        double r25841395 = r25841380 / r25841394;
        double r25841396 = fma(r25841379, r25841395, r25841393);
        return r25841396;
}

Error

Bits error versus u1

Bits error versus u2

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.3

    \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \left(\frac{{\left(-2 \cdot \log u1\right)}^{0.5}}{6}\right), 0.5\right)}\]
  3. Using strategy rm
  4. Applied *-un-lft-identity0.3

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \left(\frac{\color{blue}{1 \cdot {\left(-2 \cdot \log u1\right)}^{0.5}}}{6}\right), 0.5\right)\]
  5. Applied associate-/l*0.3

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \color{blue}{\left(\frac{1}{\frac{6}{{\left(-2 \cdot \log u1\right)}^{0.5}}}\right)}, 0.5\right)\]
  6. Taylor expanded around 0 0.4

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \left(\frac{1}{\color{blue}{6 \cdot {\left(\frac{1}{{-2}^{1.0} \cdot {\left(\log u1\right)}^{1.0}}\right)}^{0.5}}}\right), 0.5\right)\]
  7. Using strategy rm
  8. Applied associate-/r*0.4

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \color{blue}{\left(\frac{\frac{1}{6}}{{\left(\frac{1}{{-2}^{1.0} \cdot {\left(\log u1\right)}^{1.0}}\right)}^{0.5}}\right)}, 0.5\right)\]
  9. Using strategy rm
  10. Applied add-cbrt-cube0.4

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \left(\frac{\frac{1}{6}}{{\left(\frac{1}{{-2}^{1.0} \cdot \color{blue}{\sqrt[3]{\left({\left(\log u1\right)}^{1.0} \cdot {\left(\log u1\right)}^{1.0}\right) \cdot {\left(\log u1\right)}^{1.0}}}}\right)}^{0.5}}\right), 0.5\right)\]
  11. Applied add-cbrt-cube0.4

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \left(\frac{\frac{1}{6}}{{\left(\frac{1}{\color{blue}{\sqrt[3]{\left({-2}^{1.0} \cdot {-2}^{1.0}\right) \cdot {-2}^{1.0}}} \cdot \sqrt[3]{\left({\left(\log u1\right)}^{1.0} \cdot {\left(\log u1\right)}^{1.0}\right) \cdot {\left(\log u1\right)}^{1.0}}}\right)}^{0.5}}\right), 0.5\right)\]
  12. Applied cbrt-unprod0.4

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \left(\frac{\frac{1}{6}}{{\left(\frac{1}{\color{blue}{\sqrt[3]{\left(\left({-2}^{1.0} \cdot {-2}^{1.0}\right) \cdot {-2}^{1.0}\right) \cdot \left(\left({\left(\log u1\right)}^{1.0} \cdot {\left(\log u1\right)}^{1.0}\right) \cdot {\left(\log u1\right)}^{1.0}\right)}}}\right)}^{0.5}}\right), 0.5\right)\]
  13. Applied add-cbrt-cube0.4

    \[\leadsto \mathsf{fma}\left(\left(\cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right), \left(\frac{\frac{1}{6}}{{\left(\frac{\color{blue}{\sqrt[3]{\left(1 \cdot 1\right) \cdot 1}}}{\sqrt[3]{\left(\left({-2}^{1.0} \cdot {-2}^{1.0}\right) \cdot {-2}^{1.0}\right) \cdot \left(\left({\left(\log u1\right)}^{1.0} \cdot {\left(\log u1\right)}^{1.0}\right) \cdot {\left(\log u1\right)}^{1.0}\right)}}\right)}^{0.5}}\right), 0.5\right)\]
  14. Applied cbrt-undiv0.4

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

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

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

Reproduce

herbie shell --seed 2019107 +o rules:numerics
(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))