1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -140476787.3433772623538970947265625:\\
\;\;\;\;\frac{1}{y} - \left(\frac{1}{\frac{y}{x}} - x\right)\\
\mathbf{elif}\;y \le 108523950.227932274341583251953125:\\
\;\;\;\;1 - \left(y - 1\right) \cdot \left(\frac{1 - x}{1 + y} \cdot \frac{y}{y - 1}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{y} - \left(\frac{1}{\frac{y}{x}} - x\right)\\
\end{array}double f(double x, double y) {
double r29451282 = 1.0;
double r29451283 = x;
double r29451284 = r29451282 - r29451283;
double r29451285 = y;
double r29451286 = r29451284 * r29451285;
double r29451287 = r29451285 + r29451282;
double r29451288 = r29451286 / r29451287;
double r29451289 = r29451282 - r29451288;
return r29451289;
}
double f(double x, double y) {
double r29451290 = y;
double r29451291 = -140476787.34337726;
bool r29451292 = r29451290 <= r29451291;
double r29451293 = 1.0;
double r29451294 = r29451293 / r29451290;
double r29451295 = x;
double r29451296 = r29451290 / r29451295;
double r29451297 = r29451293 / r29451296;
double r29451298 = r29451297 - r29451295;
double r29451299 = r29451294 - r29451298;
double r29451300 = 108523950.22793227;
bool r29451301 = r29451290 <= r29451300;
double r29451302 = r29451290 - r29451293;
double r29451303 = r29451293 - r29451295;
double r29451304 = r29451293 + r29451290;
double r29451305 = r29451303 / r29451304;
double r29451306 = r29451290 / r29451302;
double r29451307 = r29451305 * r29451306;
double r29451308 = r29451302 * r29451307;
double r29451309 = r29451293 - r29451308;
double r29451310 = r29451301 ? r29451309 : r29451299;
double r29451311 = r29451292 ? r29451299 : r29451310;
return r29451311;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -140476787.34337726 or 108523950.22793227 < y Initial program 45.5
rmApplied *-un-lft-identity45.5
Applied times-frac29.1
Simplified29.1
Taylor expanded around inf 0.2
Simplified0.2
if -140476787.34337726 < y < 108523950.22793227Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.2
Simplified0.2
rmApplied flip-+0.2
Applied associate-/r/0.2
Applied associate-*r*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019169
(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))))