\frac{\left(x \cdot 2\right) \cdot y}{x - y}\begin{array}{l}
\mathbf{if}\;y \le -2.5251409834127483 \cdot 10^{52} \lor \neg \left(y \le 1.226684745187438 \cdot 10^{-25}\right):\\
\;\;\;\;\frac{x \cdot 2}{\frac{x - y}{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot 2}{x - y} \cdot y\\
\end{array}double f(double x, double y) {
double r479355 = x;
double r479356 = 2.0;
double r479357 = r479355 * r479356;
double r479358 = y;
double r479359 = r479357 * r479358;
double r479360 = r479355 - r479358;
double r479361 = r479359 / r479360;
return r479361;
}
double f(double x, double y) {
double r479362 = y;
double r479363 = -2.5251409834127483e+52;
bool r479364 = r479362 <= r479363;
double r479365 = 1.226684745187438e-25;
bool r479366 = r479362 <= r479365;
double r479367 = !r479366;
bool r479368 = r479364 || r479367;
double r479369 = x;
double r479370 = 2.0;
double r479371 = r479369 * r479370;
double r479372 = r479369 - r479362;
double r479373 = r479372 / r479362;
double r479374 = r479371 / r479373;
double r479375 = r479371 / r479372;
double r479376 = r479375 * r479362;
double r479377 = r479368 ? r479374 : r479376;
return r479377;
}




Bits error versus x




Bits error versus y
Results
| Original | 15.5 |
|---|---|
| Target | 0.4 |
| Herbie | 0.2 |
if y < -2.5251409834127483e+52 or 1.226684745187438e-25 < y Initial program 17.4
rmApplied associate-/l*0.1
if -2.5251409834127483e+52 < y < 1.226684745187438e-25Initial program 13.7
rmApplied associate-/l*14.3
rmApplied associate-/r/0.3
Final simplification0.2
herbie shell --seed 2020036 +o rules:numerics
(FPCore (x y)
:name "Linear.Projection:perspective from linear-1.19.1.3, B"
:precision binary64
:herbie-target
(if (< x -1.7210442634149447e+81) (* (/ (* 2 x) (- x y)) y) (if (< x 83645045635564432) (/ (* x 2) (/ (- x y) y)) (* (/ (* 2 x) (- x y)) y)))
(/ (* (* x 2) y) (- x y)))