\sqrt{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;x \le -1.2918446586536957 \cdot 10^{+154}:\\
\;\;\;\;-x\\
\mathbf{elif}\;x \le -2.6219396713989246 \cdot 10^{+28}:\\
\;\;\;\;\sqrt{y \cdot y + x \cdot x}\\
\mathbf{elif}\;x \le -3.209519593925633 \cdot 10^{-28}:\\
\;\;\;\;y\\
\mathbf{elif}\;x \le -8.056228658328031 \cdot 10^{-199}:\\
\;\;\;\;\sqrt{y \cdot y + x \cdot x}\\
\mathbf{elif}\;x \le -3.759150523562943 \cdot 10^{-268}:\\
\;\;\;\;y\\
\mathbf{elif}\;x \le 1.4301923552016937 \cdot 10^{+155}:\\
\;\;\;\;\sqrt{y \cdot y + x \cdot x}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y) {
double r40147596 = x;
double r40147597 = r40147596 * r40147596;
double r40147598 = y;
double r40147599 = r40147598 * r40147598;
double r40147600 = r40147597 + r40147599;
double r40147601 = sqrt(r40147600);
return r40147601;
}
double f(double x, double y) {
double r40147602 = x;
double r40147603 = -1.2918446586536957e+154;
bool r40147604 = r40147602 <= r40147603;
double r40147605 = -r40147602;
double r40147606 = -2.6219396713989246e+28;
bool r40147607 = r40147602 <= r40147606;
double r40147608 = y;
double r40147609 = r40147608 * r40147608;
double r40147610 = r40147602 * r40147602;
double r40147611 = r40147609 + r40147610;
double r40147612 = sqrt(r40147611);
double r40147613 = -3.209519593925633e-28;
bool r40147614 = r40147602 <= r40147613;
double r40147615 = -8.056228658328031e-199;
bool r40147616 = r40147602 <= r40147615;
double r40147617 = -3.759150523562943e-268;
bool r40147618 = r40147602 <= r40147617;
double r40147619 = 1.4301923552016937e+155;
bool r40147620 = r40147602 <= r40147619;
double r40147621 = r40147620 ? r40147612 : r40147602;
double r40147622 = r40147618 ? r40147608 : r40147621;
double r40147623 = r40147616 ? r40147612 : r40147622;
double r40147624 = r40147614 ? r40147608 : r40147623;
double r40147625 = r40147607 ? r40147612 : r40147624;
double r40147626 = r40147604 ? r40147605 : r40147625;
return r40147626;
}




Bits error versus x




Bits error versus y
Results
| Original | 29.6 |
|---|---|
| Target | 16.7 |
| Herbie | 18.2 |
if x < -1.2918446586536957e+154Initial program 59.4
Taylor expanded around -inf 7.0
Simplified7.0
if -1.2918446586536957e+154 < x < -2.6219396713989246e+28 or -3.209519593925633e-28 < x < -8.056228658328031e-199 or -3.759150523562943e-268 < x < 1.4301923552016937e+155Initial program 19.1
if -2.6219396713989246e+28 < x < -3.209519593925633e-28 or -8.056228658328031e-199 < x < -3.759150523562943e-268Initial program 23.9
Taylor expanded around 0 40.8
if 1.4301923552016937e+155 < x Initial program 59.5
Taylor expanded around inf 7.0
Final simplification18.2
herbie shell --seed 2019162
(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))))