\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(e^{\frac{t \cdot t}{2}} \cdot \sqrt{z \cdot 2}\right)double f(double x, double y, double z, double t) {
double r929992 = x;
double r929993 = 0.5;
double r929994 = r929992 * r929993;
double r929995 = y;
double r929996 = r929994 - r929995;
double r929997 = z;
double r929998 = 2.0;
double r929999 = r929997 * r929998;
double r930000 = sqrt(r929999);
double r930001 = r929996 * r930000;
double r930002 = t;
double r930003 = r930002 * r930002;
double r930004 = r930003 / r929998;
double r930005 = exp(r930004);
double r930006 = r930001 * r930005;
return r930006;
}
double f(double x, double y, double z, double t) {
double r930007 = x;
double r930008 = 0.5;
double r930009 = r930007 * r930008;
double r930010 = y;
double r930011 = r930009 - r930010;
double r930012 = t;
double r930013 = r930012 * r930012;
double r930014 = 2.0;
double r930015 = r930013 / r930014;
double r930016 = exp(r930015);
double r930017 = z;
double r930018 = r930017 * r930014;
double r930019 = sqrt(r930018);
double r930020 = r930016 * r930019;
double r930021 = r930011 * r930020;
return r930021;
}




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
Simplified0.3
Final simplification0.3
herbie shell --seed 2020047
(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))))