\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(\left(\sqrt{z \cdot 2} \cdot \sqrt{e^{\frac{t \cdot t}{2}}}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}\right)double f(double x, double y, double z, double t) {
double r774262 = x;
double r774263 = 0.5;
double r774264 = r774262 * r774263;
double r774265 = y;
double r774266 = r774264 - r774265;
double r774267 = z;
double r774268 = 2.0;
double r774269 = r774267 * r774268;
double r774270 = sqrt(r774269);
double r774271 = r774266 * r774270;
double r774272 = t;
double r774273 = r774272 * r774272;
double r774274 = r774273 / r774268;
double r774275 = exp(r774274);
double r774276 = r774271 * r774275;
return r774276;
}
double f(double x, double y, double z, double t) {
double r774277 = x;
double r774278 = 0.5;
double r774279 = r774277 * r774278;
double r774280 = y;
double r774281 = r774279 - r774280;
double r774282 = z;
double r774283 = 2.0;
double r774284 = r774282 * r774283;
double r774285 = sqrt(r774284);
double r774286 = t;
double r774287 = r774286 * r774286;
double r774288 = r774287 / r774283;
double r774289 = exp(r774288);
double r774290 = sqrt(r774289);
double r774291 = r774285 * r774290;
double r774292 = r774291 * r774290;
double r774293 = r774281 * r774292;
return r774293;
}




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
rmApplied add-sqr-sqrt0.3
Applied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2020081
(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))))