\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{\frac{t \cdot t}{\sqrt{2}}}{\sqrt{2}}}double f(double x, double y, double z, double t) {
double r34463961 = x;
double r34463962 = 0.5;
double r34463963 = r34463961 * r34463962;
double r34463964 = y;
double r34463965 = r34463963 - r34463964;
double r34463966 = z;
double r34463967 = 2.0;
double r34463968 = r34463966 * r34463967;
double r34463969 = sqrt(r34463968);
double r34463970 = r34463965 * r34463969;
double r34463971 = t;
double r34463972 = r34463971 * r34463971;
double r34463973 = r34463972 / r34463967;
double r34463974 = exp(r34463973);
double r34463975 = r34463970 * r34463974;
return r34463975;
}
double f(double x, double y, double z, double t) {
double r34463976 = x;
double r34463977 = 0.5;
double r34463978 = r34463976 * r34463977;
double r34463979 = y;
double r34463980 = r34463978 - r34463979;
double r34463981 = z;
double r34463982 = 2.0;
double r34463983 = r34463981 * r34463982;
double r34463984 = sqrt(r34463983);
double r34463985 = r34463980 * r34463984;
double r34463986 = t;
double r34463987 = r34463986 * r34463986;
double r34463988 = sqrt(r34463982);
double r34463989 = r34463987 / r34463988;
double r34463990 = r34463989 / r34463988;
double r34463991 = exp(r34463990);
double r34463992 = r34463985 * r34463991;
return r34463992;
}




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 2019169 +o rules:numerics
(FPCore (x y z t)
:name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, A"
:herbie-target
(* (* (- (* x 0.5) y) (sqrt (* z 2.0))) (pow (exp 1.0) (/ (* t t) 2.0)))
(* (* (- (* x 0.5) y) (sqrt (* z 2.0))) (exp (/ (* t t) 2.0))))