\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 \sqrt[3]{{\left({\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}\right)}^{3}}double f(double x, double y, double z, double t) {
double r813764 = x;
double r813765 = 0.5;
double r813766 = r813764 * r813765;
double r813767 = y;
double r813768 = r813766 - r813767;
double r813769 = z;
double r813770 = 2.0;
double r813771 = r813769 * r813770;
double r813772 = sqrt(r813771);
double r813773 = r813768 * r813772;
double r813774 = t;
double r813775 = r813774 * r813774;
double r813776 = r813775 / r813770;
double r813777 = exp(r813776);
double r813778 = r813773 * r813777;
return r813778;
}
double f(double x, double y, double z, double t) {
double r813779 = x;
double r813780 = 0.5;
double r813781 = r813779 * r813780;
double r813782 = y;
double r813783 = r813781 - r813782;
double r813784 = z;
double r813785 = 2.0;
double r813786 = r813784 * r813785;
double r813787 = sqrt(r813786);
double r813788 = r813783 * r813787;
double r813789 = t;
double r813790 = exp(r813789);
double r813791 = r813789 / r813785;
double r813792 = pow(r813790, r813791);
double r813793 = 3.0;
double r813794 = pow(r813792, r813793);
double r813795 = cbrt(r813794);
double r813796 = r813788 * r813795;
return r813796;
}




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 *-un-lft-identity0.3
Applied times-frac0.3
Applied exp-prod0.3
Simplified0.3
rmApplied add-cbrt-cube0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019362
(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))))