\sqrt{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;x \le -3.00186750331876538 \cdot 10^{143}:\\
\;\;\;\;-1 \cdot x\\
\mathbf{elif}\;x \le -2.02785725229385748 \cdot 10^{-184}:\\
\;\;\;\;\sqrt{x \cdot x + y \cdot y}\\
\mathbf{elif}\;x \le -9.306218889451781 \cdot 10^{-290}:\\
\;\;\;\;y\\
\mathbf{elif}\;x \le 1.74948149916647803 \cdot 10^{126}:\\
\;\;\;\;\sqrt{x \cdot x + y \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y) {
double r820749 = x;
double r820750 = r820749 * r820749;
double r820751 = y;
double r820752 = r820751 * r820751;
double r820753 = r820750 + r820752;
double r820754 = sqrt(r820753);
return r820754;
}
double f(double x, double y) {
double r820755 = x;
double r820756 = -3.0018675033187654e+143;
bool r820757 = r820755 <= r820756;
double r820758 = -1.0;
double r820759 = r820758 * r820755;
double r820760 = -2.0278572522938575e-184;
bool r820761 = r820755 <= r820760;
double r820762 = r820755 * r820755;
double r820763 = y;
double r820764 = r820763 * r820763;
double r820765 = r820762 + r820764;
double r820766 = sqrt(r820765);
double r820767 = -9.306218889451781e-290;
bool r820768 = r820755 <= r820767;
double r820769 = 1.749481499166478e+126;
bool r820770 = r820755 <= r820769;
double r820771 = r820770 ? r820766 : r820755;
double r820772 = r820768 ? r820763 : r820771;
double r820773 = r820761 ? r820766 : r820772;
double r820774 = r820757 ? r820759 : r820773;
return r820774;
}




Bits error versus x




Bits error versus y
Results
| Original | 31.8 |
|---|---|
| Target | 17.6 |
| Herbie | 18.0 |
if x < -3.0018675033187654e+143Initial program 60.8
Taylor expanded around -inf 8.1
if -3.0018675033187654e+143 < x < -2.0278572522938575e-184 or -9.306218889451781e-290 < x < 1.749481499166478e+126Initial program 19.5
if -2.0278572522938575e-184 < x < -9.306218889451781e-290Initial program 30.6
Taylor expanded around 0 36.6
if 1.749481499166478e+126 < x Initial program 56.8
Taylor expanded around inf 10.0
Final simplification18.0
herbie shell --seed 2020056
(FPCore (x y)
:name "Data.Octree.Internal:octantDistance from Octree-0.5.4.2"
:precision binary64
:herbie-target
(if (< x -1.123695082659983e+145) (- x) (if (< x 1.116557621183362e+93) (sqrt (+ (* x x) (* y y))) x))
(sqrt (+ (* x x) (* y y))))