Average Error: 0.3 → 0.3
Time: 24.3s
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 e^{\frac{\frac{t \cdot t}{\sqrt{2}}}{\sqrt{2}}}\]
\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 e^{\frac{\frac{t \cdot t}{\sqrt{2}}}{\sqrt{2}}}
double f(double x, double y, double z, double t) {
        double r34463961 = x;
        double r34463962 = 0.5;
        double r34463963 = r34463961 * r34463962;
        double r34463964 = y;
        double r34463965 = r34463963 - r34463964;
        double r34463966 = z;
        double r34463967 = 2.0;
        double r34463968 = r34463966 * r34463967;
        double r34463969 = sqrt(r34463968);
        double r34463970 = r34463965 * r34463969;
        double r34463971 = t;
        double r34463972 = r34463971 * r34463971;
        double r34463973 = r34463972 / r34463967;
        double r34463974 = exp(r34463973);
        double r34463975 = r34463970 * r34463974;
        return r34463975;
}

double f(double x, double y, double z, double t) {
        double r34463976 = x;
        double r34463977 = 0.5;
        double r34463978 = r34463976 * r34463977;
        double r34463979 = y;
        double r34463980 = r34463978 - r34463979;
        double r34463981 = z;
        double r34463982 = 2.0;
        double r34463983 = r34463981 * r34463982;
        double r34463984 = sqrt(r34463983);
        double r34463985 = r34463980 * r34463984;
        double r34463986 = t;
        double r34463987 = r34463986 * r34463986;
        double r34463988 = sqrt(r34463982);
        double r34463989 = r34463987 / r34463988;
        double r34463990 = r34463989 / r34463988;
        double r34463991 = exp(r34463990);
        double r34463992 = r34463985 * r34463991;
        return r34463992;
}

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 e^{\frac{t \cdot t}{\color{blue}{\sqrt{2} \cdot \sqrt{2}}}}\]
  4. Applied associate-/r*0.3

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

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

Reproduce

herbie shell --seed 2019169 +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))))