\frac{\left(x - y\right) \cdot \left(x + y\right)}{x \cdot x + y \cdot y}\frac{\left(x - y\right) \cdot \frac{1}{\frac{\mathsf{hypot}\left(x, y\right)}{x + y}}}{\mathsf{hypot}\left(x, y\right)}double f(double x, double y) {
double r93328 = x;
double r93329 = y;
double r93330 = r93328 - r93329;
double r93331 = r93328 + r93329;
double r93332 = r93330 * r93331;
double r93333 = r93328 * r93328;
double r93334 = r93329 * r93329;
double r93335 = r93333 + r93334;
double r93336 = r93332 / r93335;
return r93336;
}
double f(double x, double y) {
double r93337 = x;
double r93338 = y;
double r93339 = r93337 - r93338;
double r93340 = 1.0;
double r93341 = hypot(r93337, r93338);
double r93342 = r93337 + r93338;
double r93343 = r93341 / r93342;
double r93344 = r93340 / r93343;
double r93345 = r93339 * r93344;
double r93346 = r93345 / r93341;
return r93346;
}




Bits error versus x




Bits error versus y
Results
| Original | 20.4 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 20.4
rmApplied add-sqr-sqrt20.4
Applied times-frac20.4
Simplified20.4
Simplified0.0
rmApplied associate-*r/0.0
Simplified0.0
rmApplied clear-num0.0
Final simplification0.0
herbie shell --seed 2019350 +o rules:numerics
(FPCore (x y)
:name "Kahan p9 Example"
:precision binary64
:pre (and (< 0.0 x 1) (< y 1))
:herbie-target
(if (< 0.5 (fabs (/ x y)) 2) (/ (* (- x y) (+ x y)) (+ (* x x) (* y y))) (- 1 (/ 2 (+ 1 (* (/ x y) (/ x y))))))
(/ (* (- x y) (+ x y)) (+ (* x x) (* y y))))