1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -118579514.584518134593963623046875 \lor \neg \left(y \le 512264646.354484260082244873046875\right):\\
\;\;\;\;1 \cdot \left(\frac{1}{y} - \frac{x}{y}\right) + x\\
\mathbf{else}:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{y + 1}\\
\end{array}double f(double x, double y) {
double r676850 = 1.0;
double r676851 = x;
double r676852 = r676850 - r676851;
double r676853 = y;
double r676854 = r676852 * r676853;
double r676855 = r676853 + r676850;
double r676856 = r676854 / r676855;
double r676857 = r676850 - r676856;
return r676857;
}
double f(double x, double y) {
double r676858 = y;
double r676859 = -118579514.58451813;
bool r676860 = r676858 <= r676859;
double r676861 = 512264646.35448426;
bool r676862 = r676858 <= r676861;
double r676863 = !r676862;
bool r676864 = r676860 || r676863;
double r676865 = 1.0;
double r676866 = 1.0;
double r676867 = r676866 / r676858;
double r676868 = x;
double r676869 = r676868 / r676858;
double r676870 = r676867 - r676869;
double r676871 = r676865 * r676870;
double r676872 = r676871 + r676868;
double r676873 = r676865 - r676868;
double r676874 = r676858 + r676865;
double r676875 = r676858 / r676874;
double r676876 = r676873 * r676875;
double r676877 = r676865 - r676876;
double r676878 = r676864 ? r676872 : r676877;
return r676878;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -118579514.58451813 or 512264646.35448426 < y Initial program 45.4
Taylor expanded around inf 0.1
Simplified0.1
if -118579514.58451813 < y < 512264646.35448426Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019322
(FPCore (x y)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, D"
:precision binary64
:herbie-target
(if (< y -3693.84827882972468) (- (/ 1 y) (- (/ x y) x)) (if (< y 6799310503.41891003) (- 1 (/ (* (- 1 x) y) (+ y 1))) (- (/ 1 y) (- (/ x y) x))))
(- 1 (/ (* (- 1 x) y) (+ y 1))))