1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -125106665.37977612 \lor \neg \left(y \le 83349377.7217288166\right):\\
\;\;\;\;1 \cdot \left(\frac{1}{y} - \frac{x}{y}\right) + x\\
\mathbf{else}:\\
\;\;\;\;1 - \frac{1 - x}{\sqrt[3]{y + 1} \cdot \sqrt[3]{y + 1}} \cdot \frac{y}{\sqrt[3]{y + 1}}\\
\end{array}double f(double x, double y) {
double r728787 = 1.0;
double r728788 = x;
double r728789 = r728787 - r728788;
double r728790 = y;
double r728791 = r728789 * r728790;
double r728792 = r728790 + r728787;
double r728793 = r728791 / r728792;
double r728794 = r728787 - r728793;
return r728794;
}
double f(double x, double y) {
double r728795 = y;
double r728796 = -125106665.37977612;
bool r728797 = r728795 <= r728796;
double r728798 = 83349377.72172882;
bool r728799 = r728795 <= r728798;
double r728800 = !r728799;
bool r728801 = r728797 || r728800;
double r728802 = 1.0;
double r728803 = 1.0;
double r728804 = r728803 / r728795;
double r728805 = x;
double r728806 = r728805 / r728795;
double r728807 = r728804 - r728806;
double r728808 = r728802 * r728807;
double r728809 = r728808 + r728805;
double r728810 = r728802 - r728805;
double r728811 = r728795 + r728802;
double r728812 = cbrt(r728811);
double r728813 = r728812 * r728812;
double r728814 = r728810 / r728813;
double r728815 = r728795 / r728812;
double r728816 = r728814 * r728815;
double r728817 = r728802 - r728816;
double r728818 = r728801 ? r728809 : r728817;
return r728818;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -125106665.37977612 or 83349377.72172882 < y Initial program 45.9
Taylor expanded around inf 0.1
Simplified0.1
if -125106665.37977612 < y < 83349377.72172882Initial program 0.1
rmApplied add-cube-cbrt0.2
Applied times-frac0.2
Final simplification0.2
herbie shell --seed 2020018
(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))))