\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 r924809 = x;
double r924810 = 0.5;
double r924811 = r924809 * r924810;
double r924812 = y;
double r924813 = r924811 - r924812;
double r924814 = z;
double r924815 = 2.0;
double r924816 = r924814 * r924815;
double r924817 = sqrt(r924816);
double r924818 = r924813 * r924817;
double r924819 = t;
double r924820 = r924819 * r924819;
double r924821 = r924820 / r924815;
double r924822 = exp(r924821);
double r924823 = r924818 * r924822;
return r924823;
}
double f(double x, double y, double z, double t) {
double r924824 = x;
double r924825 = 0.5;
double r924826 = r924824 * r924825;
double r924827 = y;
double r924828 = r924826 - r924827;
double r924829 = z;
double r924830 = 2.0;
double r924831 = r924829 * r924830;
double r924832 = sqrt(r924831);
double r924833 = r924828 * r924832;
double r924834 = t;
double r924835 = exp(r924834);
double r924836 = r924834 / r924830;
double r924837 = pow(r924835, r924836);
double r924838 = r924833 * r924837;
return r924838;
}




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