Average Error: 0.3 → 0.4
Time: 8.6s
Precision: 64
\[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\]
\[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \sqrt[3]{{\left(e^{\frac{t \cdot t}{2}}\right)}^{3}}\]
\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}
\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \sqrt[3]{{\left(e^{\frac{t \cdot t}{2}}\right)}^{3}}
double f(double x, double y, double z, double t) {
        double r806305 = x;
        double r806306 = 0.5;
        double r806307 = r806305 * r806306;
        double r806308 = y;
        double r806309 = r806307 - r806308;
        double r806310 = z;
        double r806311 = 2.0;
        double r806312 = r806310 * r806311;
        double r806313 = sqrt(r806312);
        double r806314 = r806309 * r806313;
        double r806315 = t;
        double r806316 = r806315 * r806315;
        double r806317 = r806316 / r806311;
        double r806318 = exp(r806317);
        double r806319 = r806314 * r806318;
        return r806319;
}

double f(double x, double y, double z, double t) {
        double r806320 = x;
        double r806321 = 0.5;
        double r806322 = r806320 * r806321;
        double r806323 = y;
        double r806324 = r806322 - r806323;
        double r806325 = z;
        double r806326 = 2.0;
        double r806327 = r806325 * r806326;
        double r806328 = sqrt(r806327);
        double r806329 = r806324 * r806328;
        double r806330 = t;
        double r806331 = r806330 * r806330;
        double r806332 = r806331 / r806326;
        double r806333 = exp(r806332);
        double r806334 = 3.0;
        double r806335 = pow(r806333, r806334);
        double r806336 = cbrt(r806335);
        double r806337 = r806329 * r806336;
        return r806337;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.3
Target0.3
Herbie0.4
\[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot {\left(e^{1}\right)}^{\left(\frac{t \cdot t}{2}\right)}\]

Derivation

  1. Initial program 0.3

    \[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\]
  2. Using strategy rm
  3. Applied add-cbrt-cube0.4

    \[\leadsto \left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \color{blue}{\sqrt[3]{\left(e^{\frac{t \cdot t}{2}} \cdot e^{\frac{t \cdot t}{2}}\right) \cdot e^{\frac{t \cdot t}{2}}}}\]
  4. Simplified0.4

    \[\leadsto \left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \sqrt[3]{\color{blue}{{\left(e^{\frac{t \cdot t}{2}}\right)}^{3}}}\]
  5. Final simplification0.4

    \[\leadsto \left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \sqrt[3]{{\left(e^{\frac{t \cdot t}{2}}\right)}^{3}}\]

Reproduce

herbie shell --seed 2020034 
(FPCore (x y z t)
  :name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, A"
  :precision binary64

  :herbie-target
  (* (* (- (* x 0.5) y) (sqrt (* z 2))) (pow (exp 1) (/ (* t t) 2)))

  (* (* (- (* x 0.5) y) (sqrt (* z 2))) (exp (/ (* t t) 2))))