1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -222263426.7177731096744537353515625 \lor \neg \left(y \le 309589145.77208232879638671875\right):\\
\;\;\;\;\left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right) + x\\
\mathbf{else}:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{y + 1}\\
\end{array}double f(double x, double y) {
double r586436 = 1.0;
double r586437 = x;
double r586438 = r586436 - r586437;
double r586439 = y;
double r586440 = r586438 * r586439;
double r586441 = r586439 + r586436;
double r586442 = r586440 / r586441;
double r586443 = r586436 - r586442;
return r586443;
}
double f(double x, double y) {
double r586444 = y;
double r586445 = -222263426.7177731;
bool r586446 = r586444 <= r586445;
double r586447 = 309589145.7720823;
bool r586448 = r586444 <= r586447;
double r586449 = !r586448;
bool r586450 = r586446 || r586449;
double r586451 = 1.0;
double r586452 = r586451 / r586444;
double r586453 = x;
double r586454 = r586453 / r586444;
double r586455 = r586451 * r586454;
double r586456 = r586452 - r586455;
double r586457 = r586456 + r586453;
double r586458 = r586451 - r586453;
double r586459 = r586444 + r586451;
double r586460 = r586444 / r586459;
double r586461 = r586458 * r586460;
double r586462 = r586451 - r586461;
double r586463 = r586450 ? r586457 : r586462;
return r586463;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -222263426.7177731 or 309589145.7720823 < y Initial program 46.4
Taylor expanded around inf 0.1
Simplified0.1
if -222263426.7177731 < y < 309589145.7720823Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019235
(FPCore (x y)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, D"
:precision binary64
:herbie-target
(if (< y -3693.84827882972468) (- (/ 1 y) (- (/ x y) x)) (if (< y 6799310503.41891003) (- 1 (/ (* (- 1 x) y) (+ y 1))) (- (/ 1 y) (- (/ x y) x))))
(- 1 (/ (* (- 1 x) y) (+ y 1))))