Average Error: 0.3 → 0.5
Time: 7.9s
Precision: 64
\[\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\]
\[\left(x \cdot 0.5 - y\right) \cdot \left(\left({z}^{\frac{1}{2}} \cdot \sqrt{2}\right) \cdot {\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}\right)\]
\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}
\left(x \cdot 0.5 - y\right) \cdot \left(\left({z}^{\frac{1}{2}} \cdot \sqrt{2}\right) \cdot {\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}\right)
double f(double x, double y, double z, double t) {
        double r822758 = x;
        double r822759 = 0.5;
        double r822760 = r822758 * r822759;
        double r822761 = y;
        double r822762 = r822760 - r822761;
        double r822763 = z;
        double r822764 = 2.0;
        double r822765 = r822763 * r822764;
        double r822766 = sqrt(r822765);
        double r822767 = r822762 * r822766;
        double r822768 = t;
        double r822769 = r822768 * r822768;
        double r822770 = r822769 / r822764;
        double r822771 = exp(r822770);
        double r822772 = r822767 * r822771;
        return r822772;
}

double f(double x, double y, double z, double t) {
        double r822773 = x;
        double r822774 = 0.5;
        double r822775 = r822773 * r822774;
        double r822776 = y;
        double r822777 = r822775 - r822776;
        double r822778 = z;
        double r822779 = 0.5;
        double r822780 = pow(r822778, r822779);
        double r822781 = 2.0;
        double r822782 = sqrt(r822781);
        double r822783 = r822780 * r822782;
        double r822784 = t;
        double r822785 = exp(r822784);
        double r822786 = r822784 / r822781;
        double r822787 = pow(r822785, r822786);
        double r822788 = r822783 * r822787;
        double r822789 = r822777 * r822788;
        return r822789;
}

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.5
\[\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 associate-*l*0.3

    \[\leadsto \color{blue}{\left(x \cdot 0.5 - y\right) \cdot \left(\sqrt{z \cdot 2} \cdot e^{\frac{t \cdot t}{2}}\right)}\]
  4. Using strategy rm
  5. Applied *-un-lft-identity0.3

    \[\leadsto \left(x \cdot 0.5 - y\right) \cdot \left(\sqrt{z \cdot 2} \cdot e^{\frac{t \cdot t}{\color{blue}{1 \cdot 2}}}\right)\]
  6. Applied times-frac0.3

    \[\leadsto \left(x \cdot 0.5 - y\right) \cdot \left(\sqrt{z \cdot 2} \cdot e^{\color{blue}{\frac{t}{1} \cdot \frac{t}{2}}}\right)\]
  7. Applied exp-prod0.3

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

    \[\leadsto \left(x \cdot 0.5 - y\right) \cdot \left(\sqrt{z \cdot 2} \cdot {\color{blue}{\left(e^{t}\right)}}^{\left(\frac{t}{2}\right)}\right)\]
  9. Using strategy rm
  10. Applied sqrt-prod0.5

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

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

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

Reproduce

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