\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 e^{\frac{t \cdot t}{2}}double f(double x, double y, double z, double t) {
double r840938 = x;
double r840939 = 0.5;
double r840940 = r840938 * r840939;
double r840941 = y;
double r840942 = r840940 - r840941;
double r840943 = z;
double r840944 = 2.0;
double r840945 = r840943 * r840944;
double r840946 = sqrt(r840945);
double r840947 = r840942 * r840946;
double r840948 = t;
double r840949 = r840948 * r840948;
double r840950 = r840949 / r840944;
double r840951 = exp(r840950);
double r840952 = r840947 * r840951;
return r840952;
}
double f(double x, double y, double z, double t) {
double r840953 = x;
double r840954 = 0.5;
double r840955 = r840953 * r840954;
double r840956 = y;
double r840957 = r840955 - r840956;
double r840958 = z;
double r840959 = 2.0;
double r840960 = r840958 * r840959;
double r840961 = sqrt(r840960);
double r840962 = r840957 * r840961;
double r840963 = t;
double r840964 = r840963 * r840963;
double r840965 = r840964 / r840959;
double r840966 = exp(r840965);
double r840967 = r840962 * r840966;
return r840967;
}




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