Average Error: 0.4 → 0.4
Time: 31.3s
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\]
\[0.5 + \left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\sqrt[3]{u2 \cdot \left(2 \cdot \pi\right)} \cdot \left(\sqrt[3]{u2 \cdot \left(2 \cdot \pi\right)} \cdot \sqrt[3]{u2 \cdot \left(2 \cdot \pi\right)}\right)\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
0.5 + \left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\sqrt[3]{u2 \cdot \left(2 \cdot \pi\right)} \cdot \left(\sqrt[3]{u2 \cdot \left(2 \cdot \pi\right)} \cdot \sqrt[3]{u2 \cdot \left(2 \cdot \pi\right)}\right)\right)
double f(double u1, double u2) {
        double r1779034 = 1.0;
        double r1779035 = 6.0;
        double r1779036 = r1779034 / r1779035;
        double r1779037 = -2.0;
        double r1779038 = u1;
        double r1779039 = log(r1779038);
        double r1779040 = r1779037 * r1779039;
        double r1779041 = 0.5;
        double r1779042 = pow(r1779040, r1779041);
        double r1779043 = r1779036 * r1779042;
        double r1779044 = 2.0;
        double r1779045 = atan2(1.0, 0.0);
        double r1779046 = r1779044 * r1779045;
        double r1779047 = u2;
        double r1779048 = r1779046 * r1779047;
        double r1779049 = cos(r1779048);
        double r1779050 = r1779043 * r1779049;
        double r1779051 = r1779050 + r1779041;
        return r1779051;
}

double f(double u1, double u2) {
        double r1779052 = 0.5;
        double r1779053 = 0.16666666666666666;
        double r1779054 = -2.0;
        double r1779055 = u1;
        double r1779056 = log(r1779055);
        double r1779057 = r1779054 * r1779056;
        double r1779058 = pow(r1779057, r1779052);
        double r1779059 = r1779053 * r1779058;
        double r1779060 = u2;
        double r1779061 = 2.0;
        double r1779062 = atan2(1.0, 0.0);
        double r1779063 = r1779061 * r1779062;
        double r1779064 = r1779060 * r1779063;
        double r1779065 = cbrt(r1779064);
        double r1779066 = r1779065 * r1779065;
        double r1779067 = r1779065 * r1779066;
        double r1779068 = cos(r1779067);
        double r1779069 = r1779059 * r1779068;
        double r1779070 = r1779052 + r1779069;
        return r1779070;
}

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 add-cube-cbrt0.4

    \[\leadsto \left(\frac{1}{6} \cdot {\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\]
  4. Final simplification0.4

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

Reproduce

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