Average Error: 0.3 → 0.3
Time: 46.0s
Precision: 64
\[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2.0}\right) \cdot e^{\frac{t \cdot t}{2.0}}\]
\[\left(x \cdot 0.5 - y\right) \cdot \left(e^{\frac{t \cdot t}{2.0}} \cdot \sqrt{z \cdot 2.0}\right)\]
\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2.0}\right) \cdot e^{\frac{t \cdot t}{2.0}}
\left(x \cdot 0.5 - y\right) \cdot \left(e^{\frac{t \cdot t}{2.0}} \cdot \sqrt{z \cdot 2.0}\right)
double f(double x, double y, double z, double t) {
        double r37348555 = x;
        double r37348556 = 0.5;
        double r37348557 = r37348555 * r37348556;
        double r37348558 = y;
        double r37348559 = r37348557 - r37348558;
        double r37348560 = z;
        double r37348561 = 2.0;
        double r37348562 = r37348560 * r37348561;
        double r37348563 = sqrt(r37348562);
        double r37348564 = r37348559 * r37348563;
        double r37348565 = t;
        double r37348566 = r37348565 * r37348565;
        double r37348567 = r37348566 / r37348561;
        double r37348568 = exp(r37348567);
        double r37348569 = r37348564 * r37348568;
        return r37348569;
}

double f(double x, double y, double z, double t) {
        double r37348570 = x;
        double r37348571 = 0.5;
        double r37348572 = r37348570 * r37348571;
        double r37348573 = y;
        double r37348574 = r37348572 - r37348573;
        double r37348575 = t;
        double r37348576 = r37348575 * r37348575;
        double r37348577 = 2.0;
        double r37348578 = r37348576 / r37348577;
        double r37348579 = exp(r37348578);
        double r37348580 = z;
        double r37348581 = r37348580 * r37348577;
        double r37348582 = sqrt(r37348581);
        double r37348583 = r37348579 * r37348582;
        double r37348584 = r37348574 * r37348583;
        return r37348584;
}

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.3
\[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2.0}\right) \cdot {\left(e^{1.0}\right)}^{\left(\frac{t \cdot t}{2.0}\right)}\]

Derivation

  1. Initial program 0.3

    \[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2.0}\right) \cdot e^{\frac{t \cdot t}{2.0}}\]
  2. Using strategy rm
  3. Applied associate-*l*0.3

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

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

Reproduce

herbie shell --seed 2019165 +o rules:numerics
(FPCore (x y z t)
  :name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, A"

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

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