\sqrt{x \cdot x + y}\begin{array}{l}
\mathbf{if}\;x \le -1.179358339742639161356757845424881409648 \cdot 10^{154}:\\
\;\;\;\;-\left(x + \frac{1}{2} \cdot \frac{y}{x}\right)\\
\mathbf{elif}\;x \le 3.967804778338946091999022758751187720718 \cdot 10^{86}:\\
\;\;\;\;\sqrt{x \cdot x + y}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{1}{2} \cdot \frac{y}{x}\\
\end{array}double f(double x, double y) {
double r430960 = x;
double r430961 = r430960 * r430960;
double r430962 = y;
double r430963 = r430961 + r430962;
double r430964 = sqrt(r430963);
return r430964;
}
double f(double x, double y) {
double r430965 = x;
double r430966 = -1.1793583397426392e+154;
bool r430967 = r430965 <= r430966;
double r430968 = 0.5;
double r430969 = y;
double r430970 = r430969 / r430965;
double r430971 = r430968 * r430970;
double r430972 = r430965 + r430971;
double r430973 = -r430972;
double r430974 = 3.967804778338946e+86;
bool r430975 = r430965 <= r430974;
double r430976 = r430965 * r430965;
double r430977 = r430976 + r430969;
double r430978 = sqrt(r430977);
double r430979 = r430975 ? r430978 : r430972;
double r430980 = r430967 ? r430973 : r430979;
return r430980;
}




Bits error versus x




Bits error versus y
Results
| Original | 22.0 |
|---|---|
| Target | 0.6 |
| Herbie | 0.3 |
if x < -1.1793583397426392e+154Initial program 64.0
Taylor expanded around -inf 0
if -1.1793583397426392e+154 < x < 3.967804778338946e+86Initial program 0.0
if 3.967804778338946e+86 < x Initial program 46.1
Taylor expanded around inf 1.1
Final simplification0.3
herbie shell --seed 2019297
(FPCore (x y)
:name "Linear.Quaternion:$clog from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< x -1.5097698010472593e153) (- (+ (* 0.5 (/ y x)) x)) (if (< x 5.5823995511225407e57) (sqrt (+ (* x x) y)) (+ (* 0.5 (/ y x)) x)))
(sqrt (+ (* x x) y)))