\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 \left(\sqrt[3]{{\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}} \cdot \sqrt[3]{{\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}}\right)\right) \cdot \sqrt[3]{{\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}}double f(double x, double y, double z, double t) {
double r525719 = x;
double r525720 = 0.5;
double r525721 = r525719 * r525720;
double r525722 = y;
double r525723 = r525721 - r525722;
double r525724 = z;
double r525725 = 2.0;
double r525726 = r525724 * r525725;
double r525727 = sqrt(r525726);
double r525728 = r525723 * r525727;
double r525729 = t;
double r525730 = r525729 * r525729;
double r525731 = r525730 / r525725;
double r525732 = exp(r525731);
double r525733 = r525728 * r525732;
return r525733;
}
double f(double x, double y, double z, double t) {
double r525734 = x;
double r525735 = 0.5;
double r525736 = r525734 * r525735;
double r525737 = y;
double r525738 = r525736 - r525737;
double r525739 = z;
double r525740 = 2.0;
double r525741 = r525739 * r525740;
double r525742 = sqrt(r525741);
double r525743 = r525738 * r525742;
double r525744 = t;
double r525745 = exp(r525744);
double r525746 = r525744 / r525740;
double r525747 = pow(r525745, r525746);
double r525748 = cbrt(r525747);
double r525749 = r525748 * r525748;
double r525750 = r525743 * r525749;
double r525751 = r525750 * r525748;
return r525751;
}




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