Average Error: 0.3 → 0.5
Time: 8.4s
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 \left(\sqrt{z} \cdot \sqrt{2}\right)\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{t \cdot t}{2}}
\left(\left(x \cdot 0.5 - y\right) \cdot \left(\sqrt{z} \cdot \sqrt{2}\right)\right) \cdot e^{\frac{t \cdot t}{2}}
double f(double x, double y, double z, double t) {
        double r833498 = x;
        double r833499 = 0.5;
        double r833500 = r833498 * r833499;
        double r833501 = y;
        double r833502 = r833500 - r833501;
        double r833503 = z;
        double r833504 = 2.0;
        double r833505 = r833503 * r833504;
        double r833506 = sqrt(r833505);
        double r833507 = r833502 * r833506;
        double r833508 = t;
        double r833509 = r833508 * r833508;
        double r833510 = r833509 / r833504;
        double r833511 = exp(r833510);
        double r833512 = r833507 * r833511;
        return r833512;
}

double f(double x, double y, double z, double t) {
        double r833513 = x;
        double r833514 = 0.5;
        double r833515 = r833513 * r833514;
        double r833516 = y;
        double r833517 = r833515 - r833516;
        double r833518 = z;
        double r833519 = sqrt(r833518);
        double r833520 = 2.0;
        double r833521 = sqrt(r833520);
        double r833522 = r833519 * r833521;
        double r833523 = r833517 * r833522;
        double r833524 = t;
        double r833525 = r833524 * r833524;
        double r833526 = r833525 / r833520;
        double r833527 = exp(r833526);
        double r833528 = r833523 * r833527;
        return r833528;
}

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 sqrt-prod0.5

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

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

Reproduce

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