\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le -63362873442066488610789523456:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\
\mathbf{elif}\;b_2 \le 6.484072051994263737451444554171174935457 \cdot 10^{-107}:\\
\;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - c \cdot a}}{a} - \frac{b_2}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\
\end{array}double f(double a, double b_2, double c) {
double r945942 = b_2;
double r945943 = -r945942;
double r945944 = r945942 * r945942;
double r945945 = a;
double r945946 = c;
double r945947 = r945945 * r945946;
double r945948 = r945944 - r945947;
double r945949 = sqrt(r945948);
double r945950 = r945943 + r945949;
double r945951 = r945950 / r945945;
return r945951;
}
double f(double a, double b_2, double c) {
double r945952 = b_2;
double r945953 = -6.336287344206649e+28;
bool r945954 = r945952 <= r945953;
double r945955 = 0.5;
double r945956 = c;
double r945957 = r945956 / r945952;
double r945958 = r945955 * r945957;
double r945959 = a;
double r945960 = r945952 / r945959;
double r945961 = 2.0;
double r945962 = r945960 * r945961;
double r945963 = r945958 - r945962;
double r945964 = 6.484072051994264e-107;
bool r945965 = r945952 <= r945964;
double r945966 = r945952 * r945952;
double r945967 = r945956 * r945959;
double r945968 = r945966 - r945967;
double r945969 = sqrt(r945968);
double r945970 = r945969 / r945959;
double r945971 = r945970 - r945960;
double r945972 = -0.5;
double r945973 = r945957 * r945972;
double r945974 = r945965 ? r945971 : r945973;
double r945975 = r945954 ? r945963 : r945974;
return r945975;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
Results
if b_2 < -6.336287344206649e+28Initial program 34.8
Simplified34.8
Taylor expanded around -inf 7.0
if -6.336287344206649e+28 < b_2 < 6.484072051994264e-107Initial program 12.9
Simplified12.9
rmApplied div-sub12.9
if 6.484072051994264e-107 < b_2 Initial program 52.5
Simplified52.5
Taylor expanded around inf 9.7
Final simplification10.2
herbie shell --seed 2019192
(FPCore (a b_2 c)
:name "quad2p (problem 3.2.1, positive)"
(/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))