\frac{\left(x - y\right) \cdot \left(x + y\right)}{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;y \le -1.347493887093548 \cdot 10^{+154}:\\
\;\;\;\;-1\\
\mathbf{elif}\;y \le -2.721956094789157 \cdot 10^{-159}:\\
\;\;\;\;\frac{x \cdot x}{x \cdot x + y \cdot y} - \frac{y}{\sqrt{x \cdot x + y \cdot y}} \cdot \frac{y}{\sqrt{x \cdot x + y \cdot y}}\\
\mathbf{elif}\;y \le 3.455947184275326 \cdot 10^{-157}:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot x}{x \cdot x + y \cdot y} - \frac{y}{\sqrt{x \cdot x + y \cdot y}} \cdot \frac{y}{\sqrt{x \cdot x + y \cdot y}}\\
\end{array}double f(double x, double y) {
double r2179682 = x;
double r2179683 = y;
double r2179684 = r2179682 - r2179683;
double r2179685 = r2179682 + r2179683;
double r2179686 = r2179684 * r2179685;
double r2179687 = r2179682 * r2179682;
double r2179688 = r2179683 * r2179683;
double r2179689 = r2179687 + r2179688;
double r2179690 = r2179686 / r2179689;
return r2179690;
}
double f(double x, double y) {
double r2179691 = y;
double r2179692 = -1.347493887093548e+154;
bool r2179693 = r2179691 <= r2179692;
double r2179694 = -1.0;
double r2179695 = -2.721956094789157e-159;
bool r2179696 = r2179691 <= r2179695;
double r2179697 = x;
double r2179698 = r2179697 * r2179697;
double r2179699 = r2179691 * r2179691;
double r2179700 = r2179698 + r2179699;
double r2179701 = r2179698 / r2179700;
double r2179702 = sqrt(r2179700);
double r2179703 = r2179691 / r2179702;
double r2179704 = r2179703 * r2179703;
double r2179705 = r2179701 - r2179704;
double r2179706 = 3.455947184275326e-157;
bool r2179707 = r2179691 <= r2179706;
double r2179708 = 1.0;
double r2179709 = r2179707 ? r2179708 : r2179705;
double r2179710 = r2179696 ? r2179705 : r2179709;
double r2179711 = r2179693 ? r2179694 : r2179710;
return r2179711;
}




Bits error versus x




Bits error versus y
Results
| Original | 20.1 |
|---|---|
| Target | 0.0 |
| Herbie | 5.4 |
if y < -1.347493887093548e+154Initial program 63.6
Simplified63.6
Taylor expanded around 0 0
if -1.347493887093548e+154 < y < -2.721956094789157e-159 or 3.455947184275326e-157 < y Initial program 0.0
Simplified0.0
rmApplied add-sqr-sqrt0.0
Applied times-frac0.1
if -2.721956094789157e-159 < y < 3.455947184275326e-157Initial program 29.2
Simplified29.2
Taylor expanded around inf 16.3
Final simplification5.4
herbie shell --seed 2019142
(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))))