\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(e^{t}\right)}^{\left(\frac{t}{2}\right)}double f(double x, double y, double z, double t) {
double r3826 = x;
double r3827 = 0.5;
double r3828 = r3826 * r3827;
double r3829 = y;
double r3830 = r3828 - r3829;
double r3831 = z;
double r3832 = 2.0;
double r3833 = r3831 * r3832;
double r3834 = sqrt(r3833);
double r3835 = r3830 * r3834;
double r3836 = t;
double r3837 = r3836 * r3836;
double r3838 = r3837 / r3832;
double r3839 = exp(r3838);
double r3840 = r3835 * r3839;
return r3840;
}
double f(double x, double y, double z, double t) {
double r3841 = x;
double r3842 = 0.5;
double r3843 = r3841 * r3842;
double r3844 = y;
double r3845 = r3843 - r3844;
double r3846 = z;
double r3847 = 2.0;
double r3848 = r3846 * r3847;
double r3849 = sqrt(r3848);
double r3850 = r3845 * r3849;
double r3851 = t;
double r3852 = exp(r3851);
double r3853 = r3851 / r3847;
double r3854 = pow(r3852, r3853);
double r3855 = r3850 * r3854;
return r3855;
}




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
Final simplification0.3
herbie shell --seed 2020025 +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))))