1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -94786158.39579971134662628173828125:\\
\;\;\;\;\left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right) + x\\
\mathbf{elif}\;y \le 366205797.545144379138946533203125:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{y + 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right) + x\\
\end{array}double f(double x, double y) {
double r114459902 = 1.0;
double r114459903 = x;
double r114459904 = r114459902 - r114459903;
double r114459905 = y;
double r114459906 = r114459904 * r114459905;
double r114459907 = r114459905 + r114459902;
double r114459908 = r114459906 / r114459907;
double r114459909 = r114459902 - r114459908;
return r114459909;
}
double f(double x, double y) {
double r114459910 = y;
double r114459911 = -94786158.39579971;
bool r114459912 = r114459910 <= r114459911;
double r114459913 = 1.0;
double r114459914 = r114459913 / r114459910;
double r114459915 = x;
double r114459916 = r114459915 / r114459910;
double r114459917 = r114459913 * r114459916;
double r114459918 = r114459914 - r114459917;
double r114459919 = r114459918 + r114459915;
double r114459920 = 366205797.5451444;
bool r114459921 = r114459910 <= r114459920;
double r114459922 = r114459913 - r114459915;
double r114459923 = r114459910 + r114459913;
double r114459924 = r114459910 / r114459923;
double r114459925 = r114459922 * r114459924;
double r114459926 = r114459913 - r114459925;
double r114459927 = r114459921 ? r114459926 : r114459919;
double r114459928 = r114459912 ? r114459919 : r114459927;
return r114459928;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -94786158.39579971 or 366205797.5451444 < y Initial program 46.0
rmApplied *-un-lft-identity46.0
Applied times-frac29.4
Simplified29.4
rmApplied flip3--50.6
Simplified50.6
Taylor expanded around inf 0.1
Simplified0.1
if -94786158.39579971 < y < 366205797.5451444Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019173
(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))))