1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -179455656.4260170757770538330078125:\\
\;\;\;\;x + \left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right)\\
\mathbf{elif}\;y \le 186709514.105293214321136474609375:\\
\;\;\;\;1 - \frac{1}{y + 1} \cdot \left(\left(1 - x\right) \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right)\\
\end{array}double f(double x, double y) {
double r49392016 = 1.0;
double r49392017 = x;
double r49392018 = r49392016 - r49392017;
double r49392019 = y;
double r49392020 = r49392018 * r49392019;
double r49392021 = r49392019 + r49392016;
double r49392022 = r49392020 / r49392021;
double r49392023 = r49392016 - r49392022;
return r49392023;
}
double f(double x, double y) {
double r49392024 = y;
double r49392025 = -179455656.42601708;
bool r49392026 = r49392024 <= r49392025;
double r49392027 = x;
double r49392028 = 1.0;
double r49392029 = r49392028 / r49392024;
double r49392030 = r49392027 / r49392024;
double r49392031 = r49392028 * r49392030;
double r49392032 = r49392029 - r49392031;
double r49392033 = r49392027 + r49392032;
double r49392034 = 186709514.1052932;
bool r49392035 = r49392024 <= r49392034;
double r49392036 = 1.0;
double r49392037 = r49392024 + r49392028;
double r49392038 = r49392036 / r49392037;
double r49392039 = r49392028 - r49392027;
double r49392040 = r49392039 * r49392024;
double r49392041 = r49392038 * r49392040;
double r49392042 = r49392028 - r49392041;
double r49392043 = r49392035 ? r49392042 : r49392033;
double r49392044 = r49392026 ? r49392033 : r49392043;
return r49392044;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -179455656.42601708 or 186709514.1052932 < y Initial program 46.3
Taylor expanded around inf 0.1
Simplified0.1
if -179455656.42601708 < y < 186709514.1052932Initial program 0.2
rmApplied associate-/l*0.3
rmApplied div-inv0.3
Applied *-un-lft-identity0.3
Applied times-frac0.3
Simplified0.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))))