\sqrt{x \cdot x + y}\begin{array}{l}
\mathbf{if}\;x \le -1.3474626627347847 \cdot 10^{154}:\\
\;\;\;\;-\left(x + \frac{1}{2} \cdot \frac{y}{x}\right)\\
\mathbf{elif}\;x \le 5.291435342096596 \cdot 10^{124}:\\
\;\;\;\;\sqrt{x \cdot x + y}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{1}{2} \cdot \frac{y}{x}\\
\end{array}double f(double x, double y) {
double r463718 = x;
double r463719 = r463718 * r463718;
double r463720 = y;
double r463721 = r463719 + r463720;
double r463722 = sqrt(r463721);
return r463722;
}
double f(double x, double y) {
double r463723 = x;
double r463724 = -1.3474626627347847e+154;
bool r463725 = r463723 <= r463724;
double r463726 = 0.5;
double r463727 = y;
double r463728 = r463727 / r463723;
double r463729 = r463726 * r463728;
double r463730 = r463723 + r463729;
double r463731 = -r463730;
double r463732 = 5.291435342096596e+124;
bool r463733 = r463723 <= r463732;
double r463734 = r463723 * r463723;
double r463735 = r463734 + r463727;
double r463736 = sqrt(r463735);
double r463737 = r463733 ? r463736 : r463730;
double r463738 = r463725 ? r463731 : r463737;
return r463738;
}




Bits error versus x




Bits error versus y
Results
| Original | 21.4 |
|---|---|
| Target | 0.5 |
| Herbie | 0.1 |
if x < -1.3474626627347847e+154Initial program 64.0
Taylor expanded around -inf 0
if -1.3474626627347847e+154 < x < 5.291435342096596e+124Initial program 0.0
if 5.291435342096596e+124 < x Initial program 54.2
Taylor expanded around inf 0.3
Final simplification0.1
herbie shell --seed 2020062
(FPCore (x y)
:name "Linear.Quaternion:$clog from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< x -1.5097698010472593e+153) (- (+ (* 0.5 (/ y x)) x)) (if (< x 5.582399551122541e+57) (sqrt (+ (* x x) y)) (+ (* 0.5 (/ y x)) x)))
(sqrt (+ (* x x) y)))