\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le -1.1783617127509567 \cdot 10^{+133}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\
\mathbf{elif}\;b_2 \le 1.1310477508076152 \cdot 10^{-72}:\\
\;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} - 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 r431889 = b_2;
double r431890 = -r431889;
double r431891 = r431889 * r431889;
double r431892 = a;
double r431893 = c;
double r431894 = r431892 * r431893;
double r431895 = r431891 - r431894;
double r431896 = sqrt(r431895);
double r431897 = r431890 + r431896;
double r431898 = r431897 / r431892;
return r431898;
}
double f(double a, double b_2, double c) {
double r431899 = b_2;
double r431900 = -1.1783617127509567e+133;
bool r431901 = r431899 <= r431900;
double r431902 = 0.5;
double r431903 = c;
double r431904 = r431903 / r431899;
double r431905 = r431902 * r431904;
double r431906 = a;
double r431907 = r431899 / r431906;
double r431908 = 2.0;
double r431909 = r431907 * r431908;
double r431910 = r431905 - r431909;
double r431911 = 1.1310477508076152e-72;
bool r431912 = r431899 <= r431911;
double r431913 = r431899 * r431899;
double r431914 = r431903 * r431906;
double r431915 = r431913 - r431914;
double r431916 = sqrt(r431915);
double r431917 = r431916 - r431899;
double r431918 = r431917 / r431906;
double r431919 = -0.5;
double r431920 = r431904 * r431919;
double r431921 = r431912 ? r431918 : r431920;
double r431922 = r431901 ? r431910 : r431921;
return r431922;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
Results
if b_2 < -1.1783617127509567e+133Initial program 54.0
Simplified54.0
Taylor expanded around -inf 2.6
if -1.1783617127509567e+133 < b_2 < 1.1310477508076152e-72Initial program 11.6
Simplified11.6
if 1.1310477508076152e-72 < b_2 Initial program 52.6
Simplified52.6
Taylor expanded around inf 8.7
Final simplification9.3
herbie shell --seed 2019137
(FPCore (a b_2 c)
:name "quad2p (problem 3.2.1, positive)"
(/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))