\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 r728950 = x;
double r728951 = 0.5;
double r728952 = r728950 * r728951;
double r728953 = y;
double r728954 = r728952 - r728953;
double r728955 = z;
double r728956 = 2.0;
double r728957 = r728955 * r728956;
double r728958 = sqrt(r728957);
double r728959 = r728954 * r728958;
double r728960 = t;
double r728961 = r728960 * r728960;
double r728962 = r728961 / r728956;
double r728963 = exp(r728962);
double r728964 = r728959 * r728963;
return r728964;
}
double f(double x, double y, double z, double t) {
double r728965 = x;
double r728966 = 0.5;
double r728967 = r728965 * r728966;
double r728968 = y;
double r728969 = r728967 - r728968;
double r728970 = z;
double r728971 = 2.0;
double r728972 = r728970 * r728971;
double r728973 = sqrt(r728972);
double r728974 = r728969 * r728973;
double r728975 = t;
double r728976 = r728975 * r728975;
double r728977 = r728976 / r728971;
double r728978 = exp(r728977);
double r728979 = r728974 * r728978;
return r728979;
}




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 2019305 +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))))