1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -8762655710739029794226176:\\
\;\;\;\;\frac{1}{y} - \left(\frac{1}{\frac{y}{x}} - x\right)\\
\mathbf{elif}\;y \le 361767606.440016448497772216796875:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{1 + y}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{y} - \left(\frac{1}{\frac{y}{x}} - x\right)\\
\end{array}double f(double x, double y) {
double r33548021 = 1.0;
double r33548022 = x;
double r33548023 = r33548021 - r33548022;
double r33548024 = y;
double r33548025 = r33548023 * r33548024;
double r33548026 = r33548024 + r33548021;
double r33548027 = r33548025 / r33548026;
double r33548028 = r33548021 - r33548027;
return r33548028;
}
double f(double x, double y) {
double r33548029 = y;
double r33548030 = -8.76265571073903e+24;
bool r33548031 = r33548029 <= r33548030;
double r33548032 = 1.0;
double r33548033 = r33548032 / r33548029;
double r33548034 = x;
double r33548035 = r33548029 / r33548034;
double r33548036 = r33548032 / r33548035;
double r33548037 = r33548036 - r33548034;
double r33548038 = r33548033 - r33548037;
double r33548039 = 361767606.44001645;
bool r33548040 = r33548029 <= r33548039;
double r33548041 = r33548032 - r33548034;
double r33548042 = r33548032 + r33548029;
double r33548043 = r33548029 / r33548042;
double r33548044 = r33548041 * r33548043;
double r33548045 = r33548032 - r33548044;
double r33548046 = r33548040 ? r33548045 : r33548038;
double r33548047 = r33548031 ? r33548038 : r33548046;
return r33548047;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.4 |
if y < -8.76265571073903e+24 or 361767606.44001645 < y Initial program 46.3
rmApplied *-un-lft-identity46.3
Applied times-frac29.3
Simplified29.3
Taylor expanded around inf 0.1
Simplified0.1
if -8.76265571073903e+24 < y < 361767606.44001645Initial program 0.8
rmApplied *-un-lft-identity0.8
Applied times-frac0.7
Simplified0.7
Final simplification0.4
herbie shell --seed 2019172
(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))))