\sqrt{x \cdot x + y}\begin{array}{l}
\mathbf{if}\;x \le -1.3377295553932065 \cdot 10^{+154}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{y}{x} - x\\
\mathbf{elif}\;x \le 1.7307959125595267 \cdot 10^{+118}:\\
\;\;\;\;\sqrt{x \cdot x + y}\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{x} \cdot \frac{1}{2} + x\\
\end{array}double f(double x, double y) {
double r10172622 = x;
double r10172623 = r10172622 * r10172622;
double r10172624 = y;
double r10172625 = r10172623 + r10172624;
double r10172626 = sqrt(r10172625);
return r10172626;
}
double f(double x, double y) {
double r10172627 = x;
double r10172628 = -1.3377295553932065e+154;
bool r10172629 = r10172627 <= r10172628;
double r10172630 = -0.5;
double r10172631 = y;
double r10172632 = r10172631 / r10172627;
double r10172633 = r10172630 * r10172632;
double r10172634 = r10172633 - r10172627;
double r10172635 = 1.7307959125595267e+118;
bool r10172636 = r10172627 <= r10172635;
double r10172637 = r10172627 * r10172627;
double r10172638 = r10172637 + r10172631;
double r10172639 = sqrt(r10172638);
double r10172640 = 0.5;
double r10172641 = r10172632 * r10172640;
double r10172642 = r10172641 + r10172627;
double r10172643 = r10172636 ? r10172639 : r10172642;
double r10172644 = r10172629 ? r10172634 : r10172643;
return r10172644;
}




Bits error versus x




Bits error versus y
Results
| Original | 19.7 |
|---|---|
| Target | 0.4 |
| Herbie | 0.1 |
if x < -1.3377295553932065e+154Initial program 59.6
Taylor expanded around -inf 0
Simplified0
if -1.3377295553932065e+154 < x < 1.7307959125595267e+118Initial program 0.0
if 1.7307959125595267e+118 < x Initial program 49.0
Taylor expanded around inf 0.3
Final simplification0.1
herbie shell --seed 2019156
(FPCore (x y)
:name "Linear.Quaternion:$clog from linear-1.19.1.3"
:herbie-target
(if (< x -1.5097698010472593e+153) (- (+ (* 1/2 (/ y x)) x)) (if (< x 5.582399551122541e+57) (sqrt (+ (* x x) y)) (+ (* 1/2 (/ y x)) x)))
(sqrt (+ (* x x) y)))