1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -93297022.8796742707 \lor \neg \left(y \le 106211441.56073992\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 r796794 = 1.0;
double r796795 = x;
double r796796 = r796794 - r796795;
double r796797 = y;
double r796798 = r796796 * r796797;
double r796799 = r796797 + r796794;
double r796800 = r796798 / r796799;
double r796801 = r796794 - r796800;
return r796801;
}
double f(double x, double y) {
double r796802 = y;
double r796803 = -93297022.87967427;
bool r796804 = r796802 <= r796803;
double r796805 = 106211441.56073992;
bool r796806 = r796802 <= r796805;
double r796807 = !r796806;
bool r796808 = r796804 || r796807;
double r796809 = 1.0;
double r796810 = 1.0;
double r796811 = r796810 / r796802;
double r796812 = x;
double r796813 = r796812 / r796802;
double r796814 = r796811 - r796813;
double r796815 = r796809 * r796814;
double r796816 = r796815 + r796812;
double r796817 = r796809 - r796812;
double r796818 = r796817 * r796802;
double r796819 = r796802 * r796802;
double r796820 = r796809 * r796809;
double r796821 = r796819 - r796820;
double r796822 = r796818 / r796821;
double r796823 = r796802 - r796809;
double r796824 = r796822 * r796823;
double r796825 = r796809 - r796824;
double r796826 = r796808 ? r796816 : r796825;
return r796826;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -93297022.87967427 or 106211441.56073992 < y Initial program 45.7
Taylor expanded around inf 0.1
Simplified0.1
if -93297022.87967427 < y < 106211441.56073992Initial program 0.2
rmApplied flip-+0.2
Applied associate-/r/0.2
Final simplification0.2
herbie shell --seed 2020027
(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))))