\sqrt{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;x \le -6.52307626026875473 \cdot 10^{150}:\\
\;\;\;\;-x\\
\mathbf{elif}\;x \le 1.15840753764457407 \cdot 10^{105}:\\
\;\;\;\;\sqrt{x \cdot x + y \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y) {
double r806304 = x;
double r806305 = r806304 * r806304;
double r806306 = y;
double r806307 = r806306 * r806306;
double r806308 = r806305 + r806307;
double r806309 = sqrt(r806308);
return r806309;
}
double f(double x, double y) {
double r806310 = x;
double r806311 = -6.523076260268755e+150;
bool r806312 = r806310 <= r806311;
double r806313 = -r806310;
double r806314 = 1.158407537644574e+105;
bool r806315 = r806310 <= r806314;
double r806316 = r806310 * r806310;
double r806317 = y;
double r806318 = r806317 * r806317;
double r806319 = r806316 + r806318;
double r806320 = sqrt(r806319);
double r806321 = r806315 ? r806320 : r806310;
double r806322 = r806312 ? r806313 : r806321;
return r806322;
}




Bits error versus x




Bits error versus y
Results
| Original | 31.0 |
|---|---|
| Target | 17.5 |
| Herbie | 17.3 |
if x < -6.523076260268755e+150Initial program 63.1
Taylor expanded around -inf 7.6
Simplified7.6
if -6.523076260268755e+150 < x < 1.158407537644574e+105Initial program 20.8
if 1.158407537644574e+105 < x Initial program 51.1
Taylor expanded around inf 9.5
Final simplification17.3
herbie shell --seed 2020045
(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))))