\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 \sqrt{z \cdot 2}\right) \cdot {\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}double f(double x, double y, double z, double t) {
double r894228 = x;
double r894229 = 0.5;
double r894230 = r894228 * r894229;
double r894231 = y;
double r894232 = r894230 - r894231;
double r894233 = z;
double r894234 = 2.0;
double r894235 = r894233 * r894234;
double r894236 = sqrt(r894235);
double r894237 = r894232 * r894236;
double r894238 = t;
double r894239 = r894238 * r894238;
double r894240 = r894239 / r894234;
double r894241 = exp(r894240);
double r894242 = r894237 * r894241;
return r894242;
}
double f(double x, double y, double z, double t) {
double r894243 = x;
double r894244 = 0.5;
double r894245 = r894243 * r894244;
double r894246 = y;
double r894247 = r894245 - r894246;
double r894248 = z;
double r894249 = 2.0;
double r894250 = r894248 * r894249;
double r894251 = sqrt(r894250);
double r894252 = r894247 * r894251;
double r894253 = t;
double r894254 = exp(r894253);
double r894255 = r894253 / r894249;
double r894256 = pow(r894254, r894255);
double r894257 = r894252 * r894256;
return r894257;
}




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 *-un-lft-identity0.3
Applied times-frac0.3
Applied exp-prod0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020025 +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))))