\frac{\left(x - y\right) \cdot \left(x + y\right)}{x \cdot x + y \cdot y}\log \left(e^{\frac{\frac{1}{\frac{\mathsf{hypot}\left(x, y\right)}{y + x}} \cdot \left(x - y\right)}{\mathsf{hypot}\left(x, y\right)}}\right)double f(double x, double y) {
double r57394 = x;
double r57395 = y;
double r57396 = r57394 - r57395;
double r57397 = r57394 + r57395;
double r57398 = r57396 * r57397;
double r57399 = r57394 * r57394;
double r57400 = r57395 * r57395;
double r57401 = r57399 + r57400;
double r57402 = r57398 / r57401;
return r57402;
}
double f(double x, double y) {
double r57403 = 1.0;
double r57404 = x;
double r57405 = y;
double r57406 = hypot(r57404, r57405);
double r57407 = r57405 + r57404;
double r57408 = r57406 / r57407;
double r57409 = r57403 / r57408;
double r57410 = r57404 - r57405;
double r57411 = r57409 * r57410;
double r57412 = r57411 / r57406;
double r57413 = exp(r57412);
double r57414 = log(r57413);
return r57414;
}




Bits error versus x




Bits error versus y
Results
| Original | 20.0 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 20.0
Simplified20.0
rmApplied add-sqr-sqrt20.0
Applied times-frac20.1
Simplified20.1
Simplified0.0
rmApplied add-log-exp0.0
Simplified0.0
rmApplied pow-exp0.0
Simplified0.0
rmApplied clear-num0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y)
:name "Kahan p9 Example"
:pre (and (< 0.0 x 1.0) (< y 1.0))
:herbie-target
(if (< 0.5 (fabs (/ x y)) 2.0) (/ (* (- x y) (+ x y)) (+ (* x x) (* y y))) (- 1.0 (/ 2.0 (+ 1.0 (* (/ x y) (/ x y))))))
(/ (* (- x y) (+ x y)) (+ (* x x) (* y y))))