\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2.0}\right) \cdot e^{\frac{t \cdot t}{2.0}}\left(x \cdot 0.5 - y\right) \cdot \left(e^{\frac{t \cdot t}{2.0}} \cdot \sqrt{z \cdot 2.0}\right)double f(double x, double y, double z, double t) {
double r38854744 = x;
double r38854745 = 0.5;
double r38854746 = r38854744 * r38854745;
double r38854747 = y;
double r38854748 = r38854746 - r38854747;
double r38854749 = z;
double r38854750 = 2.0;
double r38854751 = r38854749 * r38854750;
double r38854752 = sqrt(r38854751);
double r38854753 = r38854748 * r38854752;
double r38854754 = t;
double r38854755 = r38854754 * r38854754;
double r38854756 = r38854755 / r38854750;
double r38854757 = exp(r38854756);
double r38854758 = r38854753 * r38854757;
return r38854758;
}
double f(double x, double y, double z, double t) {
double r38854759 = x;
double r38854760 = 0.5;
double r38854761 = r38854759 * r38854760;
double r38854762 = y;
double r38854763 = r38854761 - r38854762;
double r38854764 = t;
double r38854765 = r38854764 * r38854764;
double r38854766 = 2.0;
double r38854767 = r38854765 / r38854766;
double r38854768 = exp(r38854767);
double r38854769 = z;
double r38854770 = r38854769 * r38854766;
double r38854771 = sqrt(r38854770);
double r38854772 = r38854768 * r38854771;
double r38854773 = r38854763 * r38854772;
return r38854773;
}




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
rmApplied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2019165
(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))))