\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 r599819 = x;
double r599820 = 0.5;
double r599821 = r599819 * r599820;
double r599822 = y;
double r599823 = r599821 - r599822;
double r599824 = z;
double r599825 = 2.0;
double r599826 = r599824 * r599825;
double r599827 = sqrt(r599826);
double r599828 = r599823 * r599827;
double r599829 = t;
double r599830 = r599829 * r599829;
double r599831 = r599830 / r599825;
double r599832 = exp(r599831);
double r599833 = r599828 * r599832;
return r599833;
}
double f(double x, double y, double z, double t) {
double r599834 = x;
double r599835 = 0.5;
double r599836 = r599834 * r599835;
double r599837 = y;
double r599838 = r599836 - r599837;
double r599839 = z;
double r599840 = 2.0;
double r599841 = r599839 * r599840;
double r599842 = sqrt(r599841);
double r599843 = r599838 * r599842;
double r599844 = t;
double r599845 = r599844 * r599844;
double r599846 = r599845 / r599840;
double r599847 = exp(r599846);
double r599848 = r599843 * r599847;
return r599848;
}




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