\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -1.7512236628315378 \cdot 10^{+131}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 1.489031291672483 \cdot 10^{-98}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot c\right) \cdot a} - b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r886995 = b;
double r886996 = -r886995;
double r886997 = r886995 * r886995;
double r886998 = 4.0;
double r886999 = a;
double r887000 = r886998 * r886999;
double r887001 = c;
double r887002 = r887000 * r887001;
double r887003 = r886997 - r887002;
double r887004 = sqrt(r887003);
double r887005 = r886996 + r887004;
double r887006 = 2.0;
double r887007 = r887006 * r886999;
double r887008 = r887005 / r887007;
return r887008;
}
double f(double a, double b, double c) {
double r887009 = b;
double r887010 = -1.7512236628315378e+131;
bool r887011 = r887009 <= r887010;
double r887012 = c;
double r887013 = r887012 / r887009;
double r887014 = a;
double r887015 = r887009 / r887014;
double r887016 = r887013 - r887015;
double r887017 = 2.0;
double r887018 = r887016 * r887017;
double r887019 = r887018 / r887017;
double r887020 = 1.489031291672483e-98;
bool r887021 = r887009 <= r887020;
double r887022 = r887009 * r887009;
double r887023 = 4.0;
double r887024 = r887023 * r887012;
double r887025 = r887024 * r887014;
double r887026 = r887022 - r887025;
double r887027 = sqrt(r887026);
double r887028 = r887027 - r887009;
double r887029 = r887028 / r887014;
double r887030 = r887029 / r887017;
double r887031 = -2.0;
double r887032 = r887031 * r887013;
double r887033 = r887032 / r887017;
double r887034 = r887021 ? r887030 : r887033;
double r887035 = r887011 ? r887019 : r887034;
return r887035;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.7512236628315378e+131Initial program 51.5
Simplified51.5
Taylor expanded around -inf 3.0
Simplified3.0
if -1.7512236628315378e+131 < b < 1.489031291672483e-98Initial program 11.5
Simplified11.6
rmApplied *-un-lft-identity11.6
Applied associate-/r*11.6
Simplified11.6
if 1.489031291672483e-98 < b Initial program 51.5
Simplified51.5
Taylor expanded around inf 10.7
Final simplification10.1
herbie shell --seed 2019154
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))