\frac{\left(x - y\right) \cdot \left(x + y\right)}{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;y \le -1.3368229266649524 \cdot 10^{+154}:\\
\;\;\;\;-1\\
\mathbf{elif}\;y \le -1.664484555914962 \cdot 10^{-162}:\\
\;\;\;\;\frac{x \cdot x}{x \cdot x + y \cdot y} - \frac{y \cdot y}{x \cdot x + y \cdot y}\\
\mathbf{elif}\;y \le 1.8280244569921237 \cdot 10^{-162}:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot x}{x \cdot x + y \cdot y} - \frac{y \cdot y}{x \cdot x + y \cdot y}\\
\end{array}double f(double x, double y) {
double r3265415 = x;
double r3265416 = y;
double r3265417 = r3265415 - r3265416;
double r3265418 = r3265415 + r3265416;
double r3265419 = r3265417 * r3265418;
double r3265420 = r3265415 * r3265415;
double r3265421 = r3265416 * r3265416;
double r3265422 = r3265420 + r3265421;
double r3265423 = r3265419 / r3265422;
return r3265423;
}
double f(double x, double y) {
double r3265424 = y;
double r3265425 = -1.3368229266649524e+154;
bool r3265426 = r3265424 <= r3265425;
double r3265427 = -1.0;
double r3265428 = -1.664484555914962e-162;
bool r3265429 = r3265424 <= r3265428;
double r3265430 = x;
double r3265431 = r3265430 * r3265430;
double r3265432 = r3265424 * r3265424;
double r3265433 = r3265431 + r3265432;
double r3265434 = r3265431 / r3265433;
double r3265435 = r3265432 / r3265433;
double r3265436 = r3265434 - r3265435;
double r3265437 = 1.8280244569921237e-162;
bool r3265438 = r3265424 <= r3265437;
double r3265439 = 1.0;
double r3265440 = r3265438 ? r3265439 : r3265436;
double r3265441 = r3265429 ? r3265436 : r3265440;
double r3265442 = r3265426 ? r3265427 : r3265441;
return r3265442;
}




Bits error versus x




Bits error versus y
Results
| Original | 20.4 |
|---|---|
| Target | 0.0 |
| Herbie | 5.0 |
if y < -1.3368229266649524e+154Initial program 63.6
Simplified63.6
Taylor expanded around 0 0
if -1.3368229266649524e+154 < y < -1.664484555914962e-162 or 1.8280244569921237e-162 < y Initial program 0.0
Simplified0.0
if -1.664484555914962e-162 < y < 1.8280244569921237e-162Initial program 30.2
Simplified30.2
Taylor expanded around inf 15.8
Final simplification5.0
herbie shell --seed 2019138
(FPCore (x y)
:name "Kahan p9 Example"
:pre (and (< 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))))