\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(x \cdot 0.5 - y\right) \cdot \left(e^{\frac{t}{2} \cdot t} \cdot \sqrt{z \cdot 2}\right)double f(double x, double y, double z, double t) {
double r656614 = x;
double r656615 = 0.5;
double r656616 = r656614 * r656615;
double r656617 = y;
double r656618 = r656616 - r656617;
double r656619 = z;
double r656620 = 2.0;
double r656621 = r656619 * r656620;
double r656622 = sqrt(r656621);
double r656623 = r656618 * r656622;
double r656624 = t;
double r656625 = r656624 * r656624;
double r656626 = r656625 / r656620;
double r656627 = exp(r656626);
double r656628 = r656623 * r656627;
return r656628;
}
double f(double x, double y, double z, double t) {
double r656629 = x;
double r656630 = 0.5;
double r656631 = r656629 * r656630;
double r656632 = y;
double r656633 = r656631 - r656632;
double r656634 = t;
double r656635 = 2.0;
double r656636 = r656634 / r656635;
double r656637 = r656636 * r656634;
double r656638 = exp(r656637);
double r656639 = z;
double r656640 = r656639 * r656635;
double r656641 = sqrt(r656640);
double r656642 = r656638 * r656641;
double r656643 = r656633 * r656642;
return r656643;
}




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
Simplified0.3
Final simplification0.3
herbie shell --seed 2019174
(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))))