Average Error: 0.4 → 0.4
Time: 54.0s
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\]
\[\frac{0.5 \cdot 0.5 - \left(\left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right) \cdot \left(\left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right)}{0.5 - \left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\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{0.5 \cdot 0.5 - \left(\left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right) \cdot \left(\left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}\right)}{0.5 - \left(\frac{1}{6} \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right)\right) \cdot {\left(\log u1 \cdot -2\right)}^{0.5}}
double f(double u1, double u2) {
        double r2198253 = 1.0;
        double r2198254 = 6.0;
        double r2198255 = r2198253 / r2198254;
        double r2198256 = -2.0;
        double r2198257 = u1;
        double r2198258 = log(r2198257);
        double r2198259 = r2198256 * r2198258;
        double r2198260 = 0.5;
        double r2198261 = pow(r2198259, r2198260);
        double r2198262 = r2198255 * r2198261;
        double r2198263 = 2.0;
        double r2198264 = atan2(1.0, 0.0);
        double r2198265 = r2198263 * r2198264;
        double r2198266 = u2;
        double r2198267 = r2198265 * r2198266;
        double r2198268 = cos(r2198267);
        double r2198269 = r2198262 * r2198268;
        double r2198270 = r2198269 + r2198260;
        return r2198270;
}

double f(double u1, double u2) {
        double r2198271 = 0.5;
        double r2198272 = r2198271 * r2198271;
        double r2198273 = 0.16666666666666666;
        double r2198274 = 2.0;
        double r2198275 = atan2(1.0, 0.0);
        double r2198276 = r2198274 * r2198275;
        double r2198277 = u2;
        double r2198278 = r2198276 * r2198277;
        double r2198279 = cos(r2198278);
        double r2198280 = r2198273 * r2198279;
        double r2198281 = u1;
        double r2198282 = log(r2198281);
        double r2198283 = -2.0;
        double r2198284 = r2198282 * r2198283;
        double r2198285 = pow(r2198284, r2198271);
        double r2198286 = r2198280 * r2198285;
        double r2198287 = r2198286 * r2198286;
        double r2198288 = r2198272 - r2198287;
        double r2198289 = r2198271 - r2198286;
        double r2198290 = r2198288 / r2198289;
        return r2198290;
}

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 + {\left(-2 \cdot \log u1\right)}^{0.5} \cdot \left(\frac{1}{6} \cdot \cos \left(u2 \cdot \left(2 \cdot \pi\right)\right)\right)}\]
  3. Using strategy rm
  4. Applied flip-+0.4

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

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

Reproduce

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