\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 r37348555 = x;
double r37348556 = 0.5;
double r37348557 = r37348555 * r37348556;
double r37348558 = y;
double r37348559 = r37348557 - r37348558;
double r37348560 = z;
double r37348561 = 2.0;
double r37348562 = r37348560 * r37348561;
double r37348563 = sqrt(r37348562);
double r37348564 = r37348559 * r37348563;
double r37348565 = t;
double r37348566 = r37348565 * r37348565;
double r37348567 = r37348566 / r37348561;
double r37348568 = exp(r37348567);
double r37348569 = r37348564 * r37348568;
return r37348569;
}
double f(double x, double y, double z, double t) {
double r37348570 = x;
double r37348571 = 0.5;
double r37348572 = r37348570 * r37348571;
double r37348573 = y;
double r37348574 = r37348572 - r37348573;
double r37348575 = t;
double r37348576 = r37348575 * r37348575;
double r37348577 = 2.0;
double r37348578 = r37348576 / r37348577;
double r37348579 = exp(r37348578);
double r37348580 = z;
double r37348581 = r37348580 * r37348577;
double r37348582 = sqrt(r37348581);
double r37348583 = r37348579 * r37348582;
double r37348584 = r37348574 * r37348583;
return r37348584;
}




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 +o rules:numerics
(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))))