\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(\sqrt{z \cdot 2} \cdot e^{\frac{t \cdot t}{2}}\right)double f(double x, double y, double z, double t) {
double r892281 = x;
double r892282 = 0.5;
double r892283 = r892281 * r892282;
double r892284 = y;
double r892285 = r892283 - r892284;
double r892286 = z;
double r892287 = 2.0;
double r892288 = r892286 * r892287;
double r892289 = sqrt(r892288);
double r892290 = r892285 * r892289;
double r892291 = t;
double r892292 = r892291 * r892291;
double r892293 = r892292 / r892287;
double r892294 = exp(r892293);
double r892295 = r892290 * r892294;
return r892295;
}
double f(double x, double y, double z, double t) {
double r892296 = x;
double r892297 = 0.5;
double r892298 = r892296 * r892297;
double r892299 = y;
double r892300 = r892298 - r892299;
double r892301 = z;
double r892302 = 2.0;
double r892303 = r892301 * r892302;
double r892304 = sqrt(r892303);
double r892305 = t;
double r892306 = r892305 * r892305;
double r892307 = r892306 / r892302;
double r892308 = exp(r892307);
double r892309 = r892304 * r892308;
double r892310 = r892300 * r892309;
return r892310;
}




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