\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]{{\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}} \cdot \sqrt[3]{{\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}}\right) \cdot \sqrt[3]{{\left(e^{t}\right)}^{\left(\frac{t}{2}\right)}}\right)double f(double x, double y, double z, double t) {
double r500680 = x;
double r500681 = 0.5;
double r500682 = r500680 * r500681;
double r500683 = y;
double r500684 = r500682 - r500683;
double r500685 = z;
double r500686 = 2.0;
double r500687 = r500685 * r500686;
double r500688 = sqrt(r500687);
double r500689 = r500684 * r500688;
double r500690 = t;
double r500691 = r500690 * r500690;
double r500692 = r500691 / r500686;
double r500693 = exp(r500692);
double r500694 = r500689 * r500693;
return r500694;
}
double f(double x, double y, double z, double t) {
double r500695 = x;
double r500696 = 0.5;
double r500697 = r500695 * r500696;
double r500698 = y;
double r500699 = r500697 - r500698;
double r500700 = z;
double r500701 = 2.0;
double r500702 = r500700 * r500701;
double r500703 = sqrt(r500702);
double r500704 = r500699 * r500703;
double r500705 = t;
double r500706 = exp(r500705);
double r500707 = r500705 / r500701;
double r500708 = pow(r500706, r500707);
double r500709 = cbrt(r500708);
double r500710 = r500709 * r500709;
double r500711 = r500710 * r500709;
double r500712 = r500704 * r500711;
return r500712;
}




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