1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -131050117.710748062 \lor \neg \left(y \le 150372736.82230544\right):\\
\;\;\;\;\left(x + \frac{1}{y}\right) - 1 \cdot \frac{x}{y}\\
\mathbf{else}:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{y + 1}\\
\end{array}double f(double x, double y) {
double r505259 = 1.0;
double r505260 = x;
double r505261 = r505259 - r505260;
double r505262 = y;
double r505263 = r505261 * r505262;
double r505264 = r505262 + r505259;
double r505265 = r505263 / r505264;
double r505266 = r505259 - r505265;
return r505266;
}
double f(double x, double y) {
double r505267 = y;
double r505268 = -131050117.71074806;
bool r505269 = r505267 <= r505268;
double r505270 = 150372736.82230544;
bool r505271 = r505267 <= r505270;
double r505272 = !r505271;
bool r505273 = r505269 || r505272;
double r505274 = x;
double r505275 = 1.0;
double r505276 = r505275 / r505267;
double r505277 = r505274 + r505276;
double r505278 = r505274 / r505267;
double r505279 = r505275 * r505278;
double r505280 = r505277 - r505279;
double r505281 = r505275 - r505274;
double r505282 = r505267 + r505275;
double r505283 = r505267 / r505282;
double r505284 = r505281 * r505283;
double r505285 = r505275 - r505284;
double r505286 = r505273 ? r505280 : r505285;
return r505286;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -131050117.71074806 or 150372736.82230544 < y Initial program 46.0
Taylor expanded around inf 0.2
Simplified0.2
if -131050117.71074806 < y < 150372736.82230544Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019199
(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))))