\sqrt{x \cdot x + y}\begin{array}{l}
\mathbf{if}\;x \le -8.430368293804642349759278332177315240505 \cdot 10^{153}:\\
\;\;\;\;\frac{y \cdot \frac{-1}{2}}{x} - x\\
\mathbf{elif}\;x \le 2.247037676574067808708350046782507690014 \cdot 10^{83}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(x, x, y\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{\frac{1}{2}}{x}, y, x\right)\\
\end{array}double f(double x, double y) {
double r17868222 = x;
double r17868223 = r17868222 * r17868222;
double r17868224 = y;
double r17868225 = r17868223 + r17868224;
double r17868226 = sqrt(r17868225);
return r17868226;
}
double f(double x, double y) {
double r17868227 = x;
double r17868228 = -8.430368293804642e+153;
bool r17868229 = r17868227 <= r17868228;
double r17868230 = y;
double r17868231 = -0.5;
double r17868232 = r17868230 * r17868231;
double r17868233 = r17868232 / r17868227;
double r17868234 = r17868233 - r17868227;
double r17868235 = 2.2470376765740678e+83;
bool r17868236 = r17868227 <= r17868235;
double r17868237 = fma(r17868227, r17868227, r17868230);
double r17868238 = sqrt(r17868237);
double r17868239 = 0.5;
double r17868240 = r17868239 / r17868227;
double r17868241 = fma(r17868240, r17868230, r17868227);
double r17868242 = r17868236 ? r17868238 : r17868241;
double r17868243 = r17868229 ? r17868234 : r17868242;
return r17868243;
}




Bits error versus x




Bits error versus y
| Original | 21.1 |
|---|---|
| Target | 0.4 |
| Herbie | 0.2 |
if x < -8.430368293804642e+153Initial program 63.9
Simplified63.9
Taylor expanded around -inf 0
Simplified0
if -8.430368293804642e+153 < x < 2.2470376765740678e+83Initial program 0.0
Simplified0.0
if 2.2470376765740678e+83 < x Initial program 43.9
Simplified43.9
Taylor expanded around inf 1.0
Simplified1.0
Final simplification0.2
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y)
:name "Linear.Quaternion:$clog from linear-1.19.1.3"
: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)))