\frac{\left(x \cdot 2\right) \cdot y}{x - y}\begin{array}{l}
\mathbf{if}\;x \le -1.73735157607842638 \cdot 10^{-55} \lor \neg \left(x \le 2.31015467420133914 \cdot 10^{-42}\right):\\
\;\;\;\;\frac{x}{x - y} \cdot \left(y \cdot 2\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot 2}{\frac{x - y}{y}}\\
\end{array}double f(double x, double y) {
double r487359 = x;
double r487360 = 2.0;
double r487361 = r487359 * r487360;
double r487362 = y;
double r487363 = r487361 * r487362;
double r487364 = r487359 - r487362;
double r487365 = r487363 / r487364;
return r487365;
}
double f(double x, double y) {
double r487366 = x;
double r487367 = -1.7373515760784264e-55;
bool r487368 = r487366 <= r487367;
double r487369 = 2.310154674201339e-42;
bool r487370 = r487366 <= r487369;
double r487371 = !r487370;
bool r487372 = r487368 || r487371;
double r487373 = y;
double r487374 = r487366 - r487373;
double r487375 = r487366 / r487374;
double r487376 = 2.0;
double r487377 = r487373 * r487376;
double r487378 = r487375 * r487377;
double r487379 = r487366 * r487376;
double r487380 = r487374 / r487373;
double r487381 = r487379 / r487380;
double r487382 = r487372 ? r487378 : r487381;
return r487382;
}




Bits error versus x




Bits error versus y
Results
| Original | 15.1 |
|---|---|
| Target | 0.4 |
| Herbie | 0.2 |
if x < -1.7373515760784264e-55 or 2.310154674201339e-42 < x Initial program 13.7
rmApplied associate-/l*13.3
rmApplied div-inv13.4
Applied times-frac0.5
Simplified0.4
if -1.7373515760784264e-55 < x < 2.310154674201339e-42Initial program 17.0
rmApplied associate-/l*0.0
Final simplification0.2
herbie shell --seed 2020046 +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)))