\sqrt{x \cdot x + y}\begin{array}{l}
\mathbf{if}\;x \le -1.32224429827678141 \cdot 10^{154}:\\
\;\;\;\;-\left(x + \frac{1}{2} \cdot \frac{y}{x}\right)\\
\mathbf{elif}\;x \le 3.1579375708996944 \cdot 10^{147}:\\
\;\;\;\;\sqrt{x \cdot x + y}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{1}{2} \cdot \frac{y}{x}\\
\end{array}double f(double x, double y) {
double r430924 = x;
double r430925 = r430924 * r430924;
double r430926 = y;
double r430927 = r430925 + r430926;
double r430928 = sqrt(r430927);
return r430928;
}
double f(double x, double y) {
double r430929 = x;
double r430930 = -1.3222442982767814e+154;
bool r430931 = r430929 <= r430930;
double r430932 = 0.5;
double r430933 = y;
double r430934 = r430933 / r430929;
double r430935 = r430932 * r430934;
double r430936 = r430929 + r430935;
double r430937 = -r430936;
double r430938 = 3.1579375708996944e+147;
bool r430939 = r430929 <= r430938;
double r430940 = r430929 * r430929;
double r430941 = r430940 + r430933;
double r430942 = sqrt(r430941);
double r430943 = r430939 ? r430942 : r430936;
double r430944 = r430931 ? r430937 : r430943;
return r430944;
}




Bits error versus x




Bits error versus y
Results
| Original | 21.4 |
|---|---|
| Target | 0.6 |
| Herbie | 0.0 |
if x < -1.3222442982767814e+154Initial program 64.0
Taylor expanded around -inf 0
if -1.3222442982767814e+154 < x < 3.1579375708996944e+147Initial program 0.0
if 3.1579375708996944e+147 < x Initial program 61.5
Taylor expanded around inf 0.1
Final simplification0.0
herbie shell --seed 2020021
(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)))