1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -234223145.056681096553802490234375 \lor \neg \left(y \le 186709514.105293214321136474609375\right):\\
\;\;\;\;\left(x + \frac{1}{y}\right) - \frac{x \cdot 1}{y}\\
\mathbf{else}:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \left(\frac{1}{y + 1} \cdot y\right)\\
\end{array}double f(double x, double y) {
double r596808 = 1.0;
double r596809 = x;
double r596810 = r596808 - r596809;
double r596811 = y;
double r596812 = r596810 * r596811;
double r596813 = r596811 + r596808;
double r596814 = r596812 / r596813;
double r596815 = r596808 - r596814;
return r596815;
}
double f(double x, double y) {
double r596816 = y;
double r596817 = -234223145.0566811;
bool r596818 = r596816 <= r596817;
double r596819 = 186709514.1052932;
bool r596820 = r596816 <= r596819;
double r596821 = !r596820;
bool r596822 = r596818 || r596821;
double r596823 = x;
double r596824 = 1.0;
double r596825 = r596824 / r596816;
double r596826 = r596823 + r596825;
double r596827 = r596823 * r596824;
double r596828 = r596827 / r596816;
double r596829 = r596826 - r596828;
double r596830 = r596824 - r596823;
double r596831 = 1.0;
double r596832 = r596816 + r596824;
double r596833 = r596831 / r596832;
double r596834 = r596833 * r596816;
double r596835 = r596830 * r596834;
double r596836 = r596824 - r596835;
double r596837 = r596822 ? r596829 : r596836;
return r596837;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -234223145.0566811 or 186709514.1052932 < y Initial program 46.3
Simplified29.5
rmApplied flip--45.8
Simplified45.8
Simplified45.8
Taylor expanded around inf 0.1
Simplified0.1
if -234223145.0566811 < y < 186709514.1052932Initial program 0.2
Simplified0.2
rmApplied div-inv0.2
Final simplification0.2
herbie shell --seed 2019174
(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))))