\frac{\left(x \cdot 2\right) \cdot y}{x - y}\begin{array}{l}
\mathbf{if}\;y \le -29856493142547368 \lor \neg \left(y \le 2.1640309147455017 \cdot 10^{-67}\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 r653971 = x;
double r653972 = 2.0;
double r653973 = r653971 * r653972;
double r653974 = y;
double r653975 = r653973 * r653974;
double r653976 = r653971 - r653974;
double r653977 = r653975 / r653976;
return r653977;
}
double f(double x, double y) {
double r653978 = y;
double r653979 = -2.985649314254737e+16;
bool r653980 = r653978 <= r653979;
double r653981 = 2.1640309147455017e-67;
bool r653982 = r653978 <= r653981;
double r653983 = !r653982;
bool r653984 = r653980 || r653983;
double r653985 = x;
double r653986 = 2.0;
double r653987 = r653985 * r653986;
double r653988 = r653985 - r653978;
double r653989 = r653988 / r653978;
double r653990 = r653987 / r653989;
double r653991 = r653987 / r653988;
double r653992 = r653991 * r653978;
double r653993 = r653984 ? r653990 : r653992;
return r653993;
}




Bits error versus x




Bits error versus y
Results
| Original | 15.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if y < -2.985649314254737e+16 or 2.1640309147455017e-67 < y Initial program 15.3
rmApplied associate-/l*0.4
if -2.985649314254737e+16 < y < 2.1640309147455017e-67Initial program 15.3
rmApplied associate-/l*16.1
rmApplied associate-/r/0.1
Final simplification0.2
herbie shell --seed 2020047
(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)))