\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 r679890 = x;
double r679891 = 0.5;
double r679892 = r679890 * r679891;
double r679893 = y;
double r679894 = r679892 - r679893;
double r679895 = z;
double r679896 = 2.0;
double r679897 = r679895 * r679896;
double r679898 = sqrt(r679897);
double r679899 = r679894 * r679898;
double r679900 = t;
double r679901 = r679900 * r679900;
double r679902 = r679901 / r679896;
double r679903 = exp(r679902);
double r679904 = r679899 * r679903;
return r679904;
}
double f(double x, double y, double z, double t) {
double r679905 = x;
double r679906 = 0.5;
double r679907 = r679905 * r679906;
double r679908 = y;
double r679909 = r679907 - r679908;
double r679910 = z;
double r679911 = 2.0;
double r679912 = r679910 * r679911;
double r679913 = sqrt(r679912);
double r679914 = r679909 * r679913;
double r679915 = t;
double r679916 = r679915 * r679915;
double r679917 = r679916 / r679911;
double r679918 = exp(r679917);
double r679919 = r679914 * r679918;
return r679919;
}




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 2019305
(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))))