1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -8762655710739029794226176:\\
\;\;\;\;\left(x + \frac{1}{y}\right) - \frac{x}{\frac{y}{1}}\\
\mathbf{elif}\;y \le 361767606.440016448497772216796875:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{1 + y}\\
\mathbf{else}:\\
\;\;\;\;\left(x + \frac{1}{y}\right) - \frac{x}{\frac{y}{1}}\\
\end{array}double f(double x, double y) {
double r30452414 = 1.0;
double r30452415 = x;
double r30452416 = r30452414 - r30452415;
double r30452417 = y;
double r30452418 = r30452416 * r30452417;
double r30452419 = r30452417 + r30452414;
double r30452420 = r30452418 / r30452419;
double r30452421 = r30452414 - r30452420;
return r30452421;
}
double f(double x, double y) {
double r30452422 = y;
double r30452423 = -8.76265571073903e+24;
bool r30452424 = r30452422 <= r30452423;
double r30452425 = x;
double r30452426 = 1.0;
double r30452427 = r30452426 / r30452422;
double r30452428 = r30452425 + r30452427;
double r30452429 = r30452422 / r30452426;
double r30452430 = r30452425 / r30452429;
double r30452431 = r30452428 - r30452430;
double r30452432 = 361767606.44001645;
bool r30452433 = r30452422 <= r30452432;
double r30452434 = r30452426 - r30452425;
double r30452435 = r30452426 + r30452422;
double r30452436 = r30452422 / r30452435;
double r30452437 = r30452434 * r30452436;
double r30452438 = r30452426 - r30452437;
double r30452439 = r30452433 ? r30452438 : r30452431;
double r30452440 = r30452424 ? r30452431 : r30452439;
return r30452440;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.4 |
if y < -8.76265571073903e+24 or 361767606.44001645 < y Initial program 46.3
Taylor expanded around inf 0.1
Simplified0.1
if -8.76265571073903e+24 < y < 361767606.44001645Initial program 0.8
rmApplied *-un-lft-identity0.8
Applied times-frac0.7
Simplified0.7
Final simplification0.4
herbie shell --seed 2019172
(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))))