\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(\left(\sqrt{z} \cdot \left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right)\right) \cdot \sqrt[3]{\sqrt{2}}\right)\right) \cdot e^{\frac{t \cdot t}{2}}double f(double x, double y, double z, double t) {
double r799278 = x;
double r799279 = 0.5;
double r799280 = r799278 * r799279;
double r799281 = y;
double r799282 = r799280 - r799281;
double r799283 = z;
double r799284 = 2.0;
double r799285 = r799283 * r799284;
double r799286 = sqrt(r799285);
double r799287 = r799282 * r799286;
double r799288 = t;
double r799289 = r799288 * r799288;
double r799290 = r799289 / r799284;
double r799291 = exp(r799290);
double r799292 = r799287 * r799291;
return r799292;
}
double f(double x, double y, double z, double t) {
double r799293 = x;
double r799294 = 0.5;
double r799295 = r799293 * r799294;
double r799296 = y;
double r799297 = r799295 - r799296;
double r799298 = z;
double r799299 = sqrt(r799298);
double r799300 = 2.0;
double r799301 = sqrt(r799300);
double r799302 = cbrt(r799301);
double r799303 = r799302 * r799302;
double r799304 = r799299 * r799303;
double r799305 = r799304 * r799302;
double r799306 = r799297 * r799305;
double r799307 = t;
double r799308 = r799307 * r799307;
double r799309 = r799308 / r799300;
double r799310 = exp(r799309);
double r799311 = r799306 * r799310;
return r799311;
}




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
Applied associate-*r*0.5
rmApplied associate-*l*0.5
rmApplied add-cube-cbrt0.5
Applied associate-*r*0.5
Final simplification0.5
herbie shell --seed 2019322
(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))))