\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2.0}\right) \cdot e^{\frac{t \cdot t}{2.0}}\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2.0}\right) \cdot e^{\frac{t \cdot t}{2.0}}double f(double x, double y, double z, double t) {
double r36644526 = x;
double r36644527 = 0.5;
double r36644528 = r36644526 * r36644527;
double r36644529 = y;
double r36644530 = r36644528 - r36644529;
double r36644531 = z;
double r36644532 = 2.0;
double r36644533 = r36644531 * r36644532;
double r36644534 = sqrt(r36644533);
double r36644535 = r36644530 * r36644534;
double r36644536 = t;
double r36644537 = r36644536 * r36644536;
double r36644538 = r36644537 / r36644532;
double r36644539 = exp(r36644538);
double r36644540 = r36644535 * r36644539;
return r36644540;
}
double f(double x, double y, double z, double t) {
double r36644541 = x;
double r36644542 = 0.5;
double r36644543 = r36644541 * r36644542;
double r36644544 = y;
double r36644545 = r36644543 - r36644544;
double r36644546 = z;
double r36644547 = 2.0;
double r36644548 = r36644546 * r36644547;
double r36644549 = sqrt(r36644548);
double r36644550 = r36644545 * r36644549;
double r36644551 = t;
double r36644552 = r36644551 * r36644551;
double r36644553 = r36644552 / r36644547;
double r36644554 = exp(r36644553);
double r36644555 = r36644550 * r36644554;
return r36644555;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 0.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 0.3
Final simplification0.3
herbie shell --seed 2019168
(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) (/ (* t t) 2.0)))
(* (* (- (* x 0.5) y) (sqrt (* z 2.0))) (exp (/ (* t t) 2.0))))