\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{\frac{t \cdot t}{\sqrt[3]{2} \cdot \sqrt[3]{2}}}{\sqrt[3]{2}}}double f(double x, double y, double z, double t) {
double r806692 = x;
double r806693 = 0.5;
double r806694 = r806692 * r806693;
double r806695 = y;
double r806696 = r806694 - r806695;
double r806697 = z;
double r806698 = 2.0;
double r806699 = r806697 * r806698;
double r806700 = sqrt(r806699);
double r806701 = r806696 * r806700;
double r806702 = t;
double r806703 = r806702 * r806702;
double r806704 = r806703 / r806698;
double r806705 = exp(r806704);
double r806706 = r806701 * r806705;
return r806706;
}
double f(double x, double y, double z, double t) {
double r806707 = x;
double r806708 = 0.5;
double r806709 = r806707 * r806708;
double r806710 = y;
double r806711 = r806709 - r806710;
double r806712 = z;
double r806713 = 2.0;
double r806714 = r806712 * r806713;
double r806715 = sqrt(r806714);
double r806716 = r806711 * r806715;
double r806717 = t;
double r806718 = r806717 * r806717;
double r806719 = cbrt(r806713);
double r806720 = r806719 * r806719;
double r806721 = r806718 / r806720;
double r806722 = r806721 / r806719;
double r806723 = exp(r806722);
double r806724 = r806716 * r806723;
return r806724;
}




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-cube-cbrt0.3
Applied associate-/r*0.3
Final simplification0.3
herbie shell --seed 2020049
(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))))