\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 \left({\left(\sqrt[3]{e^{t}} \cdot \sqrt[3]{e^{t}}\right)}^{\left(\frac{t}{2}\right)} \cdot {\left(\sqrt[3]{e^{t}}\right)}^{\left(\frac{t}{2}\right)}\right)double f(double x, double y, double z, double t) {
double r821714 = x;
double r821715 = 0.5;
double r821716 = r821714 * r821715;
double r821717 = y;
double r821718 = r821716 - r821717;
double r821719 = z;
double r821720 = 2.0;
double r821721 = r821719 * r821720;
double r821722 = sqrt(r821721);
double r821723 = r821718 * r821722;
double r821724 = t;
double r821725 = r821724 * r821724;
double r821726 = r821725 / r821720;
double r821727 = exp(r821726);
double r821728 = r821723 * r821727;
return r821728;
}
double f(double x, double y, double z, double t) {
double r821729 = x;
double r821730 = 0.5;
double r821731 = r821729 * r821730;
double r821732 = y;
double r821733 = r821731 - r821732;
double r821734 = z;
double r821735 = 2.0;
double r821736 = r821734 * r821735;
double r821737 = sqrt(r821736);
double r821738 = r821733 * r821737;
double r821739 = t;
double r821740 = exp(r821739);
double r821741 = cbrt(r821740);
double r821742 = r821741 * r821741;
double r821743 = r821739 / r821735;
double r821744 = pow(r821742, r821743);
double r821745 = pow(r821741, r821743);
double r821746 = r821744 * r821745;
double r821747 = r821738 * r821746;
return r821747;
}




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 unpow-prod-down0.3
Final simplification0.3
herbie shell --seed 2020045 +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))))