1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\begin{array}{l}
\mathbf{if}\;y \le -2868269604.961124897003173828125 \lor \neg \left(y \le 186543853.3156950771808624267578125\right):\\
\;\;\;\;x + \left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{y + 1}\\
\end{array}double f(double x, double y) {
double r584288 = 1.0;
double r584289 = x;
double r584290 = r584288 - r584289;
double r584291 = y;
double r584292 = r584290 * r584291;
double r584293 = r584291 + r584288;
double r584294 = r584292 / r584293;
double r584295 = r584288 - r584294;
return r584295;
}
double f(double x, double y) {
double r584296 = y;
double r584297 = -2868269604.961125;
bool r584298 = r584296 <= r584297;
double r584299 = 186543853.31569508;
bool r584300 = r584296 <= r584299;
double r584301 = !r584300;
bool r584302 = r584298 || r584301;
double r584303 = x;
double r584304 = 1.0;
double r584305 = r584304 / r584296;
double r584306 = r584303 / r584296;
double r584307 = r584304 * r584306;
double r584308 = r584305 - r584307;
double r584309 = r584303 + r584308;
double r584310 = r584304 - r584303;
double r584311 = r584296 + r584304;
double r584312 = r584296 / r584311;
double r584313 = r584310 * r584312;
double r584314 = r584304 - r584313;
double r584315 = r584302 ? r584309 : r584314;
return r584315;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
if y < -2868269604.961125 or 186543853.31569508 < y Initial program 46.9
rmApplied *-un-lft-identity46.9
Applied times-frac30.3
Simplified30.3
rmApplied flip3--51.3
Simplified51.3
rmApplied flip-+54.1
Applied associate-/r/54.1
Simplified54.9
Taylor expanded around inf 0.1
Simplified0.1
if -2868269604.961125 < y < 186543853.31569508Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.2
Simplified0.2
Final simplification0.1
herbie shell --seed 2019208
(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))))