\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 \sqrt{e^{\frac{t \cdot t}{2}}}\right) \cdot \sqrt{e^{\frac{t \cdot t}{2}}}double f(double x, double y, double z, double t) {
double r792667 = x;
double r792668 = 0.5;
double r792669 = r792667 * r792668;
double r792670 = y;
double r792671 = r792669 - r792670;
double r792672 = z;
double r792673 = 2.0;
double r792674 = r792672 * r792673;
double r792675 = sqrt(r792674);
double r792676 = r792671 * r792675;
double r792677 = t;
double r792678 = r792677 * r792677;
double r792679 = r792678 / r792673;
double r792680 = exp(r792679);
double r792681 = r792676 * r792680;
return r792681;
}
double f(double x, double y, double z, double t) {
double r792682 = x;
double r792683 = 0.5;
double r792684 = r792682 * r792683;
double r792685 = y;
double r792686 = r792684 - r792685;
double r792687 = z;
double r792688 = 2.0;
double r792689 = r792687 * r792688;
double r792690 = sqrt(r792689);
double r792691 = r792686 * r792690;
double r792692 = t;
double r792693 = r792692 * r792692;
double r792694 = r792693 / r792688;
double r792695 = exp(r792694);
double r792696 = sqrt(r792695);
double r792697 = r792691 * r792696;
double r792698 = r792697 * r792696;
return r792698;
}




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 add-sqr-sqrt0.3
Applied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2020046 +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))))