1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -184222856.9532372057437896728515625 \lor \neg \left(y \le 105820959.87149597704410552978515625\right):\\
\;\;\;\;\mathsf{fma}\left(1, \frac{1}{y} - \frac{x}{y}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(-\left(y - 1\right)\right) + \left(y - 1\right)\right) \cdot \frac{1 - x}{\frac{\left(y - 1\right) \cdot \left(1 + y\right)}{y}} + \mathsf{fma}\left(-\frac{1 - x}{\frac{1 + y}{\frac{y}{y - 1}}}, y - 1, 1\right)\\
\end{array}double f(double x, double y) {
double r656639 = 1.0;
double r656640 = x;
double r656641 = r656639 - r656640;
double r656642 = y;
double r656643 = r656641 * r656642;
double r656644 = r656642 + r656639;
double r656645 = r656643 / r656644;
double r656646 = r656639 - r656645;
return r656646;
}
double f(double x, double y) {
double r656647 = y;
double r656648 = -184222856.9532372;
bool r656649 = r656647 <= r656648;
double r656650 = 105820959.87149598;
bool r656651 = r656647 <= r656650;
double r656652 = !r656651;
bool r656653 = r656649 || r656652;
double r656654 = 1.0;
double r656655 = 1.0;
double r656656 = r656655 / r656647;
double r656657 = x;
double r656658 = r656657 / r656647;
double r656659 = r656656 - r656658;
double r656660 = fma(r656654, r656659, r656657);
double r656661 = r656647 - r656654;
double r656662 = -r656661;
double r656663 = r656662 + r656661;
double r656664 = r656654 - r656657;
double r656665 = r656654 + r656647;
double r656666 = r656661 * r656665;
double r656667 = r656666 / r656647;
double r656668 = r656664 / r656667;
double r656669 = r656663 * r656668;
double r656670 = r656647 / r656661;
double r656671 = r656665 / r656670;
double r656672 = r656664 / r656671;
double r656673 = -r656672;
double r656674 = fma(r656673, r656661, r656654);
double r656675 = r656669 + r656674;
double r656676 = r656653 ? r656660 : r656675;
return r656676;
}




Bits error versus x




Bits error versus y
| Original | 22.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -184222856.9532372 or 105820959.87149598 < y Initial program 45.9
Taylor expanded around inf 0.2
Simplified0.2
if -184222856.9532372 < y < 105820959.87149598Initial program 0.1
rmApplied flip-+0.1
Applied associate-/r/0.1
Applied add-sqr-sqrt0.1
Applied prod-diff0.1
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019196 +o rules:numerics
(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))))