1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le \frac{-6710697772236959}{67108864} \lor \neg \left(y \le \frac{5932035440293501}{33554432}\right):\\
\;\;\;\;1 \cdot \left(\frac{1}{y} - \frac{x}{y}\right) + x\\
\mathbf{else}:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \left(y \cdot \frac{1}{y + 1}\right)\\
\end{array}double f(double x, double y) {
double r576268 = 1.0;
double r576269 = x;
double r576270 = r576268 - r576269;
double r576271 = y;
double r576272 = r576270 * r576271;
double r576273 = r576271 + r576268;
double r576274 = r576272 / r576273;
double r576275 = r576268 - r576274;
return r576275;
}
double f(double x, double y) {
double r576276 = y;
double r576277 = -6710697772236959.0;
double r576278 = 67108864.0;
double r576279 = r576277 / r576278;
bool r576280 = r576276 <= r576279;
double r576281 = 5932035440293501.0;
double r576282 = 33554432.0;
double r576283 = r576281 / r576282;
bool r576284 = r576276 <= r576283;
double r576285 = !r576284;
bool r576286 = r576280 || r576285;
double r576287 = 1.0;
double r576288 = 1.0;
double r576289 = r576288 / r576276;
double r576290 = x;
double r576291 = r576290 / r576276;
double r576292 = r576289 - r576291;
double r576293 = r576287 * r576292;
double r576294 = r576293 + r576290;
double r576295 = r576287 - r576290;
double r576296 = r576276 + r576287;
double r576297 = r576288 / r576296;
double r576298 = r576276 * r576297;
double r576299 = r576295 * r576298;
double r576300 = r576287 - r576299;
double r576301 = r576286 ? r576294 : r576300;
return r576301;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -99997189.22729729 or 176788432.60686103 < y Initial program 46.1
Taylor expanded around inf 0.1
Simplified0.1
if -99997189.22729729 < y < 176788432.60686103Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.2
Simplified0.2
rmApplied div-inv0.2
Final simplification0.2
herbie shell --seed 2019304
(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))))