1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -162929032.461607038974761962890625 \lor \neg \left(y \le 194765081.4755440056324005126953125\right):\\
\;\;\;\;\left(x + \frac{1}{y}\right) - 1 \cdot \frac{x}{y}\\
\mathbf{else}:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{1 + y}\\
\end{array}double f(double x, double y) {
double r459765 = 1.0;
double r459766 = x;
double r459767 = r459765 - r459766;
double r459768 = y;
double r459769 = r459767 * r459768;
double r459770 = r459768 + r459765;
double r459771 = r459769 / r459770;
double r459772 = r459765 - r459771;
return r459772;
}
double f(double x, double y) {
double r459773 = y;
double r459774 = -162929032.46160704;
bool r459775 = r459773 <= r459774;
double r459776 = 194765081.475544;
bool r459777 = r459773 <= r459776;
double r459778 = !r459777;
bool r459779 = r459775 || r459778;
double r459780 = x;
double r459781 = 1.0;
double r459782 = r459781 / r459773;
double r459783 = r459780 + r459782;
double r459784 = r459780 / r459773;
double r459785 = r459781 * r459784;
double r459786 = r459783 - r459785;
double r459787 = r459781 - r459780;
double r459788 = r459781 + r459773;
double r459789 = r459773 / r459788;
double r459790 = r459787 * r459789;
double r459791 = r459781 - r459790;
double r459792 = r459779 ? r459786 : r459791;
return r459792;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -162929032.46160704 or 194765081.475544 < y Initial program 44.6
Simplified28.3
Taylor expanded around inf 0.2
Simplified0.2
if -162929032.46160704 < y < 194765081.475544Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019179
(FPCore (x y)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, D"
:herbie-target
(if (< y -3693.8482788297247) (- (/ 1.0 y) (- (/ x y) x)) (if (< y 6799310503.41891) (- 1.0 (/ (* (- 1.0 x) y) (+ y 1.0))) (- (/ 1.0 y) (- (/ x y) x))))
(- 1.0 (/ (* (- 1.0 x) y) (+ y 1.0))))