\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 e^{\frac{t \cdot t}{2}}double f(double x, double y, double z, double t) {
double r817273 = x;
double r817274 = 0.5;
double r817275 = r817273 * r817274;
double r817276 = y;
double r817277 = r817275 - r817276;
double r817278 = z;
double r817279 = 2.0;
double r817280 = r817278 * r817279;
double r817281 = sqrt(r817280);
double r817282 = r817277 * r817281;
double r817283 = t;
double r817284 = r817283 * r817283;
double r817285 = r817284 / r817279;
double r817286 = exp(r817285);
double r817287 = r817282 * r817286;
return r817287;
}
double f(double x, double y, double z, double t) {
double r817288 = x;
double r817289 = 0.5;
double r817290 = r817288 * r817289;
double r817291 = y;
double r817292 = r817290 - r817291;
double r817293 = z;
double r817294 = 2.0;
double r817295 = r817293 * r817294;
double r817296 = sqrt(r817295);
double r817297 = r817292 * r817296;
double r817298 = t;
double r817299 = r817298 * r817298;
double r817300 = r817299 / r817294;
double r817301 = exp(r817300);
double r817302 = r817297 * r817301;
return r817302;
}




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
Final simplification0.3
herbie shell --seed 2019354 +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))))