\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 r920868 = x;
double r920869 = 0.5;
double r920870 = r920868 * r920869;
double r920871 = y;
double r920872 = r920870 - r920871;
double r920873 = z;
double r920874 = 2.0;
double r920875 = r920873 * r920874;
double r920876 = sqrt(r920875);
double r920877 = r920872 * r920876;
double r920878 = t;
double r920879 = r920878 * r920878;
double r920880 = r920879 / r920874;
double r920881 = exp(r920880);
double r920882 = r920877 * r920881;
return r920882;
}
double f(double x, double y, double z, double t) {
double r920883 = x;
double r920884 = 0.5;
double r920885 = r920883 * r920884;
double r920886 = y;
double r920887 = r920885 - r920886;
double r920888 = z;
double r920889 = 2.0;
double r920890 = r920888 * r920889;
double r920891 = sqrt(r920890);
double r920892 = r920887 * r920891;
double r920893 = t;
double r920894 = r920893 * r920893;
double r920895 = r920894 / r920889;
double r920896 = exp(r920895);
double r920897 = sqrt(r920896);
double r920898 = r920892 * r920897;
double r920899 = r920898 * r920897;
return r920899;
}




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