\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 r544654 = x;
double r544655 = 2.0;
double r544656 = r544654 * r544655;
double r544657 = y;
double r544658 = r544656 * r544657;
double r544659 = r544654 - r544657;
double r544660 = r544658 / r544659;
return r544660;
}
double f(double x, double y) {
double r544661 = y;
double r544662 = -2.985649314254737e+16;
bool r544663 = r544661 <= r544662;
double r544664 = 2.1640309147455017e-67;
bool r544665 = r544661 <= r544664;
double r544666 = !r544665;
bool r544667 = r544663 || r544666;
double r544668 = x;
double r544669 = 2.0;
double r544670 = r544668 * r544669;
double r544671 = r544668 - r544661;
double r544672 = r544671 / r544661;
double r544673 = r544670 / r544672;
double r544674 = r544670 / r544671;
double r544675 = r544674 * r544661;
double r544676 = r544667 ? r544673 : r544675;
return r544676;
}




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)))