\sqrt{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;x \le -6.15241991167455 \cdot 10^{+150}:\\
\;\;\;\;-x\\
\mathbf{elif}\;x \le 1.8791426213625292 \cdot 10^{+66}:\\
\;\;\;\;\sqrt{y \cdot y + x \cdot x}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y) {
double r43615466 = x;
double r43615467 = r43615466 * r43615466;
double r43615468 = y;
double r43615469 = r43615468 * r43615468;
double r43615470 = r43615467 + r43615469;
double r43615471 = sqrt(r43615470);
return r43615471;
}
double f(double x, double y) {
double r43615472 = x;
double r43615473 = -6.15241991167455e+150;
bool r43615474 = r43615472 <= r43615473;
double r43615475 = -r43615472;
double r43615476 = 1.8791426213625292e+66;
bool r43615477 = r43615472 <= r43615476;
double r43615478 = y;
double r43615479 = r43615478 * r43615478;
double r43615480 = r43615472 * r43615472;
double r43615481 = r43615479 + r43615480;
double r43615482 = sqrt(r43615481);
double r43615483 = r43615477 ? r43615482 : r43615472;
double r43615484 = r43615474 ? r43615475 : r43615483;
return r43615484;
}




Bits error versus x




Bits error versus y
Results
| Original | 29.6 |
|---|---|
| Target | 17.0 |
| Herbie | 17.1 |
if x < -6.15241991167455e+150Initial program 58.2
Taylor expanded around -inf 7.7
Simplified7.7
if -6.15241991167455e+150 < x < 1.8791426213625292e+66Initial program 20.3
if 1.8791426213625292e+66 < x Initial program 44.2
Taylor expanded around inf 11.7
Final simplification17.1
herbie shell --seed 2019163
(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))))