\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(\sqrt{2} \cdot \left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z}\right)\right) \cdot e^{\frac{t \cdot t}{2}}double f(double x, double y, double z, double t) {
double r892679 = x;
double r892680 = 0.5;
double r892681 = r892679 * r892680;
double r892682 = y;
double r892683 = r892681 - r892682;
double r892684 = z;
double r892685 = 2.0;
double r892686 = r892684 * r892685;
double r892687 = sqrt(r892686);
double r892688 = r892683 * r892687;
double r892689 = t;
double r892690 = r892689 * r892689;
double r892691 = r892690 / r892685;
double r892692 = exp(r892691);
double r892693 = r892688 * r892692;
return r892693;
}
double f(double x, double y, double z, double t) {
double r892694 = 2.0;
double r892695 = sqrt(r892694);
double r892696 = x;
double r892697 = 0.5;
double r892698 = r892696 * r892697;
double r892699 = y;
double r892700 = r892698 - r892699;
double r892701 = z;
double r892702 = sqrt(r892701);
double r892703 = r892700 * r892702;
double r892704 = r892695 * r892703;
double r892705 = t;
double r892706 = r892705 * r892705;
double r892707 = r892706 / r892694;
double r892708 = exp(r892707);
double r892709 = r892704 * r892708;
return r892709;
}




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 *-un-lft-identity0.5
Final simplification0.5
herbie shell --seed 2020042 +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))))