\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z \cdot 2}\right) \cdot e^{\frac{t \cdot t}{2}}\left(\left(\left(x \cdot 0.5 - y\right) \cdot \sqrt{z}\right) \cdot \sqrt{2}\right) \cdot e^{0.5 \cdot {t}^{2}}double f(double x, double y, double z, double t) {
double r814233 = x;
double r814234 = 0.5;
double r814235 = r814233 * r814234;
double r814236 = y;
double r814237 = r814235 - r814236;
double r814238 = z;
double r814239 = 2.0;
double r814240 = r814238 * r814239;
double r814241 = sqrt(r814240);
double r814242 = r814237 * r814241;
double r814243 = t;
double r814244 = r814243 * r814243;
double r814245 = r814244 / r814239;
double r814246 = exp(r814245);
double r814247 = r814242 * r814246;
return r814247;
}
double f(double x, double y, double z, double t) {
double r814248 = x;
double r814249 = 0.5;
double r814250 = r814248 * r814249;
double r814251 = y;
double r814252 = r814250 - r814251;
double r814253 = z;
double r814254 = sqrt(r814253);
double r814255 = r814252 * r814254;
double r814256 = 2.0;
double r814257 = sqrt(r814256);
double r814258 = r814255 * r814257;
double r814259 = t;
double r814260 = 2.0;
double r814261 = pow(r814259, r814260);
double r814262 = r814249 * r814261;
double r814263 = exp(r814262);
double r814264 = r814258 * r814263;
return r814264;
}




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.5 |
Initial program 0.3
rmApplied sqrt-prod0.5
Applied associate-*r*0.5
Taylor expanded around 0 0.5
Final simplification0.5
herbie shell --seed 2020042
(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))))