1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -100774082.496590316295623779296875 \lor \neg \left(y \le 238223948.7008026540279388427734375\right):\\
\;\;\;\;\frac{1}{y} + \left(x - 1 \cdot \frac{x}{y}\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \frac{\left(1 - x\right) \cdot y}{y \cdot y - 1 \cdot 1} \cdot \left(y - 1\right)\\
\end{array}double f(double x, double y) {
double r781316 = 1.0;
double r781317 = x;
double r781318 = r781316 - r781317;
double r781319 = y;
double r781320 = r781318 * r781319;
double r781321 = r781319 + r781316;
double r781322 = r781320 / r781321;
double r781323 = r781316 - r781322;
return r781323;
}
double f(double x, double y) {
double r781324 = y;
double r781325 = -100774082.49659032;
bool r781326 = r781324 <= r781325;
double r781327 = 238223948.70080265;
bool r781328 = r781324 <= r781327;
double r781329 = !r781328;
bool r781330 = r781326 || r781329;
double r781331 = 1.0;
double r781332 = r781331 / r781324;
double r781333 = x;
double r781334 = r781333 / r781324;
double r781335 = r781331 * r781334;
double r781336 = r781333 - r781335;
double r781337 = r781332 + r781336;
double r781338 = r781331 - r781333;
double r781339 = r781338 * r781324;
double r781340 = r781324 * r781324;
double r781341 = r781331 * r781331;
double r781342 = r781340 - r781341;
double r781343 = r781339 / r781342;
double r781344 = r781324 - r781331;
double r781345 = r781343 * r781344;
double r781346 = r781331 - r781345;
double r781347 = r781330 ? r781337 : r781346;
return r781347;
}




Bits error versus x




Bits error versus y
Results
| Original | 21.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -100774082.49659032 or 238223948.70080265 < y Initial program 45.3
rmApplied flip-+49.8
Applied associate-/r/49.8
Taylor expanded around inf 0.2
Simplified0.2
if -100774082.49659032 < y < 238223948.70080265Initial program 0.1
rmApplied flip-+0.2
Applied associate-/r/0.2
Final simplification0.2
herbie shell --seed 2019350
(FPCore (x y)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, D"
:precision binary64
:herbie-target
(if (< y -3693.8482788297247) (- (/ 1 y) (- (/ x y) x)) (if (< y 6799310503.41891) (- 1 (/ (* (- 1 x) y) (+ y 1))) (- (/ 1 y) (- (/ x y) x))))
(- 1 (/ (* (- 1 x) y) (+ y 1))))