\sqrt{x \cdot x + y}\begin{array}{l}
\mathbf{if}\;x \le -1.375458412520537572590774977918936206023 \cdot 10^{154}:\\
\;\;\;\;-\mathsf{fma}\left(\frac{y}{x}, \frac{1}{2}, x\right)\\
\mathbf{elif}\;x \le 2.058549686456957362651677908428126133886 \cdot 10^{132}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(x, x, y\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{x}, \frac{1}{2}, x\right)\\
\end{array}double f(double x, double y) {
double r289376 = x;
double r289377 = r289376 * r289376;
double r289378 = y;
double r289379 = r289377 + r289378;
double r289380 = sqrt(r289379);
return r289380;
}
double f(double x, double y) {
double r289381 = x;
double r289382 = -1.3754584125205376e+154;
bool r289383 = r289381 <= r289382;
double r289384 = y;
double r289385 = r289384 / r289381;
double r289386 = 0.5;
double r289387 = fma(r289385, r289386, r289381);
double r289388 = -r289387;
double r289389 = 2.0585496864569574e+132;
bool r289390 = r289381 <= r289389;
double r289391 = fma(r289381, r289381, r289384);
double r289392 = sqrt(r289391);
double r289393 = r289390 ? r289392 : r289387;
double r289394 = r289383 ? r289388 : r289393;
return r289394;
}




Bits error versus x




Bits error versus y
| Original | 21.0 |
|---|---|
| Target | 0.6 |
| Herbie | 0.0 |
if x < -1.3754584125205376e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 0
Simplified0
if -1.3754584125205376e+154 < x < 2.0585496864569574e+132Initial program 0.0
Simplified0.0
if 2.0585496864569574e+132 < x Initial program 56.3
Simplified56.3
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.0
herbie shell --seed 2019325 +o rules:numerics
(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)))