\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 r27175940 = x;
double r27175941 = r27175940 * r27175940;
double r27175942 = y;
double r27175943 = r27175941 + r27175942;
double r27175944 = sqrt(r27175943);
return r27175944;
}
double f(double x, double y) {
double r27175945 = x;
double r27175946 = -8.430368293804642e+153;
bool r27175947 = r27175945 <= r27175946;
double r27175948 = y;
double r27175949 = -0.5;
double r27175950 = r27175948 * r27175949;
double r27175951 = r27175950 / r27175945;
double r27175952 = r27175951 - r27175945;
double r27175953 = 2.2470376765740678e+83;
bool r27175954 = r27175945 <= r27175953;
double r27175955 = fma(r27175945, r27175945, r27175948);
double r27175956 = sqrt(r27175955);
double r27175957 = 0.5;
double r27175958 = r27175957 / r27175945;
double r27175959 = fma(r27175958, r27175948, r27175945);
double r27175960 = r27175954 ? r27175956 : r27175959;
double r27175961 = r27175947 ? r27175952 : r27175960;
return r27175961;
}




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)))