1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -17413228841055.01171875:\\
\;\;\;\;\left(x - \frac{1}{\frac{y}{x}}\right) + \frac{1}{y}\\
\mathbf{elif}\;y \le 256213875.7381432950496673583984375:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{1 + y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{1}{\frac{y}{x}}\right) + \frac{1}{y}\\
\end{array}double f(double x, double y) {
double r36423603 = 1.0;
double r36423604 = x;
double r36423605 = r36423603 - r36423604;
double r36423606 = y;
double r36423607 = r36423605 * r36423606;
double r36423608 = r36423606 + r36423603;
double r36423609 = r36423607 / r36423608;
double r36423610 = r36423603 - r36423609;
return r36423610;
}
double f(double x, double y) {
double r36423611 = y;
double r36423612 = -17413228841055.012;
bool r36423613 = r36423611 <= r36423612;
double r36423614 = x;
double r36423615 = 1.0;
double r36423616 = r36423611 / r36423614;
double r36423617 = r36423615 / r36423616;
double r36423618 = r36423614 - r36423617;
double r36423619 = r36423615 / r36423611;
double r36423620 = r36423618 + r36423619;
double r36423621 = 256213875.7381433;
bool r36423622 = r36423611 <= r36423621;
double r36423623 = r36423615 - r36423614;
double r36423624 = r36423615 + r36423611;
double r36423625 = r36423611 / r36423624;
double r36423626 = r36423623 * r36423625;
double r36423627 = r36423615 - r36423626;
double r36423628 = r36423622 ? r36423627 : r36423620;
double r36423629 = r36423613 ? r36423620 : r36423628;
return r36423629;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -17413228841055.012 or 256213875.7381433 < y Initial program 46.6
rmApplied *-un-lft-identity46.6
Applied times-frac29.7
Simplified29.7
Taylor expanded around inf 0.1
Simplified0.1
if -17413228841055.012 < y < 256213875.7381433Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.3
Simplified0.3
Final simplification0.2
herbie shell --seed 2019171
(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))))