\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}e^{\frac{t \cdot t}{2}} \cdot \left(\left(\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z}\right) \cdot \left(\sqrt{\left|\sqrt[3]{2}\right|} \cdot \sqrt{\sqrt{2}}\right)\right) \cdot \sqrt{\sqrt{\sqrt[3]{2}}}\right)double f(double x, double y, double z, double t) {
double r35309656 = x;
double r35309657 = 0.5;
double r35309658 = r35309656 * r35309657;
double r35309659 = y;
double r35309660 = r35309658 - r35309659;
double r35309661 = z;
double r35309662 = 2.0;
double r35309663 = r35309661 * r35309662;
double r35309664 = sqrt(r35309663);
double r35309665 = r35309660 * r35309664;
double r35309666 = t;
double r35309667 = r35309666 * r35309666;
double r35309668 = r35309667 / r35309662;
double r35309669 = exp(r35309668);
double r35309670 = r35309665 * r35309669;
return r35309670;
}
double f(double x, double y, double z, double t) {
double r35309671 = t;
double r35309672 = r35309671 * r35309671;
double r35309673 = 2.0;
double r35309674 = r35309672 / r35309673;
double r35309675 = exp(r35309674);
double r35309676 = x;
double r35309677 = 0.5;
double r35309678 = r35309676 * r35309677;
double r35309679 = y;
double r35309680 = r35309678 - r35309679;
double r35309681 = z;
double r35309682 = sqrt(r35309681);
double r35309683 = r35309680 * r35309682;
double r35309684 = cbrt(r35309673);
double r35309685 = fabs(r35309684);
double r35309686 = sqrt(r35309685);
double r35309687 = sqrt(r35309673);
double r35309688 = sqrt(r35309687);
double r35309689 = r35309686 * r35309688;
double r35309690 = r35309683 * r35309689;
double r35309691 = sqrt(r35309684);
double r35309692 = sqrt(r35309691);
double r35309693 = r35309690 * r35309692;
double r35309694 = r35309675 * r35309693;
return r35309694;
}




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.5 |
Initial program 0.3
rmApplied sqrt-prod0.5
Applied associate-*r*0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.6
Applied associate-*r*0.6
rmApplied add-cube-cbrt0.8
Applied sqrt-prod0.8
Applied sqrt-prod0.8
Applied associate-*r*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z t)
:name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, A"
:herbie-target
(* (* (- (* x 0.5) y) (sqrt (* z 2.0))) (pow (exp 1.0) (/ (* t t) 2.0)))
(* (* (- (* x 0.5) y) (sqrt (* z 2.0))) (exp (/ (* t t) 2.0))))