\sqrt{x \cdot x + y \cdot y}\begin{array}{l}
\mathbf{if}\;x \le -6.4397722734901768 \cdot 10^{138}:\\
\;\;\;\;-x\\
\mathbf{elif}\;x \le 1.95063775952267208 \cdot 10^{126}:\\
\;\;\;\;\sqrt{x \cdot x + y \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y) {
double r555628 = x;
double r555629 = r555628 * r555628;
double r555630 = y;
double r555631 = r555630 * r555630;
double r555632 = r555629 + r555631;
double r555633 = sqrt(r555632);
return r555633;
}
double f(double x, double y) {
double r555634 = x;
double r555635 = -6.439772273490177e+138;
bool r555636 = r555634 <= r555635;
double r555637 = -r555634;
double r555638 = 1.950637759522672e+126;
bool r555639 = r555634 <= r555638;
double r555640 = r555634 * r555634;
double r555641 = y;
double r555642 = r555641 * r555641;
double r555643 = r555640 + r555642;
double r555644 = sqrt(r555643);
double r555645 = r555639 ? r555644 : r555634;
double r555646 = r555636 ? r555637 : r555645;
return r555646;
}




Bits error versus x




Bits error versus y
Results
| Original | 31.9 |
|---|---|
| Target | 17.9 |
| Herbie | 17.7 |
if x < -6.439772273490177e+138Initial program 59.2
Taylor expanded around -inf 8.2
Simplified8.2
if -6.439772273490177e+138 < x < 1.950637759522672e+126Initial program 21.4
if 1.950637759522672e+126 < x Initial program 56.2
Taylor expanded around inf 9.2
Final simplification17.7
herbie shell --seed 2019199
(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))))