Average Error: 0.3 → 0.3
Time: 14.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(\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}\]
\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}
\left(\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}
double f(double x, double y, double z, double t) {
        double r920868 = x;
        double r920869 = 0.5;
        double r920870 = r920868 * r920869;
        double r920871 = y;
        double r920872 = r920870 - r920871;
        double r920873 = z;
        double r920874 = 2.0;
        double r920875 = r920873 * r920874;
        double r920876 = sqrt(r920875);
        double r920877 = r920872 * r920876;
        double r920878 = t;
        double r920879 = r920878 * r920878;
        double r920880 = r920879 / r920874;
        double r920881 = exp(r920880);
        double r920882 = r920877 * r920881;
        return r920882;
}

double f(double x, double y, double z, double t) {
        double r920883 = x;
        double r920884 = 0.5;
        double r920885 = r920883 * r920884;
        double r920886 = y;
        double r920887 = r920885 - r920886;
        double r920888 = z;
        double r920889 = 2.0;
        double r920890 = r920888 * r920889;
        double r920891 = sqrt(r920890);
        double r920892 = r920887 * r920891;
        double r920893 = t;
        double r920894 = r920893 * r920893;
        double r920895 = r920894 / r920889;
        double r920896 = exp(r920895);
        double r920897 = sqrt(r920896);
        double r920898 = r920892 * r920897;
        double r920899 = r920898 * r920897;
        return r920899;
}

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}\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-sqr-sqrt0.3

    \[\leadsto \left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \color{blue}{\left(\sqrt{e^{\frac{t \cdot t}{2}}} \cdot \sqrt{e^{\frac{t \cdot t}{2}}}\right)}\]
  4. Applied associate-*r*0.3

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

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

Reproduce

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