1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -82325870.8211927711963653564453125 \lor \neg \left(y \le 156431656.8362415730953216552734375\right):\\
\;\;\;\;1 \cdot \left(\frac{1}{y} - \frac{x}{y}\right) + x\\
\mathbf{else}:\\
\;\;\;\;1 - \frac{\left(1 - x\right) \cdot y}{y \cdot y - 1 \cdot 1} \cdot \left(y - 1\right)\\
\end{array}double f(double x, double y) {
double r762383 = 1.0;
double r762384 = x;
double r762385 = r762383 - r762384;
double r762386 = y;
double r762387 = r762385 * r762386;
double r762388 = r762386 + r762383;
double r762389 = r762387 / r762388;
double r762390 = r762383 - r762389;
return r762390;
}
double f(double x, double y) {
double r762391 = y;
double r762392 = -82325870.82119277;
bool r762393 = r762391 <= r762392;
double r762394 = 156431656.83624157;
bool r762395 = r762391 <= r762394;
double r762396 = !r762395;
bool r762397 = r762393 || r762396;
double r762398 = 1.0;
double r762399 = 1.0;
double r762400 = r762399 / r762391;
double r762401 = x;
double r762402 = r762401 / r762391;
double r762403 = r762400 - r762402;
double r762404 = r762398 * r762403;
double r762405 = r762404 + r762401;
double r762406 = r762398 - r762401;
double r762407 = r762406 * r762391;
double r762408 = r762391 * r762391;
double r762409 = r762398 * r762398;
double r762410 = r762408 - r762409;
double r762411 = r762407 / r762410;
double r762412 = r762391 - r762398;
double r762413 = r762411 * r762412;
double r762414 = r762398 - r762413;
double r762415 = r762397 ? r762405 : r762414;
return r762415;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -82325870.82119277 or 156431656.83624157 < y Initial program 46.0
Taylor expanded around inf 0.2
Simplified0.2
if -82325870.82119277 < y < 156431656.83624157Initial program 0.1
rmApplied flip-+0.2
Applied associate-/r/0.2
Final simplification0.2
herbie shell --seed 2020001
(FPCore (x y)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, D"
:precision binary64
:herbie-target
(if (< y -3693.8482788297247) (- (/ 1 y) (- (/ x y) x)) (if (< y 6799310503.41891) (- 1 (/ (* (- 1 x) y) (+ y 1))) (- (/ 1 y) (- (/ x y) x))))
(- 1 (/ (* (- 1 x) y) (+ y 1))))