\sqrt{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;x \le -2.222006465724332039862348815623896484961 \cdot 10^{103}:\\
\;\;\;\;-x\\
\mathbf{elif}\;x \le 4.856770854610730383064334389991702440912 \cdot 10^{140}:\\
\;\;\;\;\sqrt{y \cdot y + x \cdot x}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y) {
double r38665971 = x;
double r38665972 = r38665971 * r38665971;
double r38665973 = y;
double r38665974 = r38665973 * r38665973;
double r38665975 = r38665972 + r38665974;
double r38665976 = sqrt(r38665975);
return r38665976;
}
double f(double x, double y) {
double r38665977 = x;
double r38665978 = -2.222006465724332e+103;
bool r38665979 = r38665977 <= r38665978;
double r38665980 = -r38665977;
double r38665981 = 4.85677085461073e+140;
bool r38665982 = r38665977 <= r38665981;
double r38665983 = y;
double r38665984 = r38665983 * r38665983;
double r38665985 = r38665977 * r38665977;
double r38665986 = r38665984 + r38665985;
double r38665987 = sqrt(r38665986);
double r38665988 = r38665982 ? r38665987 : r38665977;
double r38665989 = r38665979 ? r38665980 : r38665988;
return r38665989;
}




Bits error versus x




Bits error versus y
Results
| Original | 31.0 |
|---|---|
| Target | 17.5 |
| Herbie | 17.4 |
if x < -2.222006465724332e+103Initial program 52.0
Taylor expanded around -inf 10.0
Simplified10.0
if -2.222006465724332e+103 < x < 4.85677085461073e+140Initial program 20.7
if 4.85677085461073e+140 < x Initial program 59.6
Taylor expanded around inf 8.9
Final simplification17.4
herbie shell --seed 2019172
(FPCore (x y)
:name "Data.Octree.Internal:octantDistance from Octree-0.5.4.2"
:herbie-target
(if (< x -1.1236950826599826e+145) (- x) (if (< x 1.116557621183362e+93) (sqrt (+ (* x x) (* y y))) x))
(sqrt (+ (* x x) (* y y))))