\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 r72488 = x;
double r72489 = y;
double r72490 = r72488 - r72489;
double r72491 = r72488 + r72489;
double r72492 = r72490 * r72491;
double r72493 = r72488 * r72488;
double r72494 = r72489 * r72489;
double r72495 = r72493 + r72494;
double r72496 = r72492 / r72495;
return r72496;
}
double f(double x, double y) {
double r72497 = 1.0;
double r72498 = x;
double r72499 = y;
double r72500 = hypot(r72498, r72499);
double r72501 = r72499 + r72498;
double r72502 = r72500 / r72501;
double r72503 = r72497 / r72502;
double r72504 = r72498 - r72499;
double r72505 = r72503 * r72504;
double r72506 = r72505 / r72500;
double r72507 = exp(r72506);
double r72508 = log(r72507);
return r72508;
}




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