\sqrt{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;x \le -8.181359696053478 \cdot 10^{+96}:\\
\;\;\;\;-x\\
\mathbf{elif}\;x \le 7.263939058947569 \cdot 10^{+108}:\\
\;\;\;\;\sqrt{y \cdot y + x \cdot x}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y) {
double r40526133 = x;
double r40526134 = r40526133 * r40526133;
double r40526135 = y;
double r40526136 = r40526135 * r40526135;
double r40526137 = r40526134 + r40526136;
double r40526138 = sqrt(r40526137);
return r40526138;
}
double f(double x, double y) {
double r40526139 = x;
double r40526140 = -8.181359696053478e+96;
bool r40526141 = r40526139 <= r40526140;
double r40526142 = -r40526139;
double r40526143 = 7.263939058947569e+108;
bool r40526144 = r40526139 <= r40526143;
double r40526145 = y;
double r40526146 = r40526145 * r40526145;
double r40526147 = r40526139 * r40526139;
double r40526148 = r40526146 + r40526147;
double r40526149 = sqrt(r40526148);
double r40526150 = r40526144 ? r40526149 : r40526139;
double r40526151 = r40526141 ? r40526142 : r40526150;
return r40526151;
}




Bits error versus x




Bits error versus y
Results
| Original | 29.4 |
|---|---|
| Target | 16.4 |
| Herbie | 16.5 |
if x < -8.181359696053478e+96Initial program 47.8
Taylor expanded around -inf 10.3
Simplified10.3
if -8.181359696053478e+96 < x < 7.263939058947569e+108Initial program 19.9
if 7.263939058947569e+108 < x Initial program 49.9
Taylor expanded around inf 8.8
Final simplification16.5
herbie shell --seed 2019164
(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))))