\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 r1542838 = x;
double r1542839 = 0.5;
double r1542840 = r1542838 * r1542839;
double r1542841 = y;
double r1542842 = r1542840 - r1542841;
double r1542843 = z;
double r1542844 = 2.0;
double r1542845 = r1542843 * r1542844;
double r1542846 = sqrt(r1542845);
double r1542847 = r1542842 * r1542846;
double r1542848 = t;
double r1542849 = r1542848 * r1542848;
double r1542850 = r1542849 / r1542844;
double r1542851 = exp(r1542850);
double r1542852 = r1542847 * r1542851;
return r1542852;
}
double f(double x, double y, double z, double t) {
double r1542853 = x;
double r1542854 = 0.5;
double r1542855 = r1542853 * r1542854;
double r1542856 = y;
double r1542857 = r1542855 - r1542856;
double r1542858 = t;
double r1542859 = r1542858 * r1542858;
double r1542860 = 2.0;
double r1542861 = r1542859 / r1542860;
double r1542862 = exp(r1542861);
double r1542863 = z;
double r1542864 = r1542863 * r1542860;
double r1542865 = sqrt(r1542864);
double r1542866 = r1542862 * r1542865;
double r1542867 = r1542857 * r1542866;
return r1542867;
}




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