\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}double f(double x, double y, double z, double t) {
double r800221 = x;
double r800222 = 0.5;
double r800223 = r800221 * r800222;
double r800224 = y;
double r800225 = r800223 - r800224;
double r800226 = z;
double r800227 = 2.0;
double r800228 = r800226 * r800227;
double r800229 = sqrt(r800228);
double r800230 = r800225 * r800229;
double r800231 = t;
double r800232 = r800231 * r800231;
double r800233 = r800232 / r800227;
double r800234 = exp(r800233);
double r800235 = r800230 * r800234;
return r800235;
}
double f(double x, double y, double z, double t) {
double r800236 = x;
double r800237 = 0.5;
double r800238 = r800236 * r800237;
double r800239 = y;
double r800240 = r800238 - r800239;
double r800241 = z;
double r800242 = 2.0;
double r800243 = r800241 * r800242;
double r800244 = sqrt(r800243);
double r800245 = r800240 * r800244;
double r800246 = t;
double r800247 = r800246 * r800246;
double r800248 = r800247 / r800242;
double r800249 = exp(r800248);
double r800250 = sqrt(r800249);
double r800251 = r800245 * r800250;
double r800252 = r800251 * r800250;
return r800252;
}




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