\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 r846442 = x;
double r846443 = 0.5;
double r846444 = r846442 * r846443;
double r846445 = y;
double r846446 = r846444 - r846445;
double r846447 = z;
double r846448 = 2.0;
double r846449 = r846447 * r846448;
double r846450 = sqrt(r846449);
double r846451 = r846446 * r846450;
double r846452 = t;
double r846453 = r846452 * r846452;
double r846454 = r846453 / r846448;
double r846455 = exp(r846454);
double r846456 = r846451 * r846455;
return r846456;
}
double f(double x, double y, double z, double t) {
double r846457 = x;
double r846458 = 0.5;
double r846459 = r846457 * r846458;
double r846460 = y;
double r846461 = r846459 - r846460;
double r846462 = z;
double r846463 = sqrt(r846462);
double r846464 = 2.0;
double r846465 = sqrt(r846464);
double r846466 = r846463 * r846465;
double r846467 = r846461 * r846466;
double r846468 = t;
double r846469 = r846468 * r846468;
double r846470 = r846469 / r846464;
double r846471 = exp(r846470);
double r846472 = r846467 * r846471;
return r846472;
}




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.5 |
Initial program 0.3
rmApplied sqrt-prod0.5
Final simplification0.5
herbie shell --seed 2020056
(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))))