Average Error: 0.3 → 0.3
Time: 12.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(\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 r800221 = x;
        double r800222 = 0.5;
        double r800223 = r800221 * r800222;
        double r800224 = y;
        double r800225 = r800223 - r800224;
        double r800226 = z;
        double r800227 = 2.0;
        double r800228 = r800226 * r800227;
        double r800229 = sqrt(r800228);
        double r800230 = r800225 * r800229;
        double r800231 = t;
        double r800232 = r800231 * r800231;
        double r800233 = r800232 / r800227;
        double r800234 = exp(r800233);
        double r800235 = r800230 * r800234;
        return r800235;
}

double f(double x, double y, double z, double t) {
        double r800236 = x;
        double r800237 = 0.5;
        double r800238 = r800236 * r800237;
        double r800239 = y;
        double r800240 = r800238 - r800239;
        double r800241 = z;
        double r800242 = 2.0;
        double r800243 = r800241 * r800242;
        double r800244 = sqrt(r800243);
        double r800245 = r800240 * r800244;
        double r800246 = t;
        double r800247 = r800246 * r800246;
        double r800248 = r800247 / r800242;
        double r800249 = exp(r800248);
        double r800250 = sqrt(r800249);
        double r800251 = r800245 * r800250;
        double r800252 = r800251 * r800250;
        return r800252;
}

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 +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))))