\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 5.85280970215493034913833980681374669075:\\
\;\;\;\;\frac{\frac{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right) - b \cdot b}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r31995 = b;
double r31996 = -r31995;
double r31997 = r31995 * r31995;
double r31998 = 4.0;
double r31999 = a;
double r32000 = r31998 * r31999;
double r32001 = c;
double r32002 = r32000 * r32001;
double r32003 = r31997 - r32002;
double r32004 = sqrt(r32003);
double r32005 = r31996 + r32004;
double r32006 = 2.0;
double r32007 = r32006 * r31999;
double r32008 = r32005 / r32007;
return r32008;
}
double f(double a, double b, double c) {
double r32009 = b;
double r32010 = 5.85280970215493;
bool r32011 = r32009 <= r32010;
double r32012 = r32009 * r32009;
double r32013 = 4.0;
double r32014 = a;
double r32015 = r32013 * r32014;
double r32016 = c;
double r32017 = r32015 * r32016;
double r32018 = r32012 - r32017;
double r32019 = r32018 - r32012;
double r32020 = sqrt(r32018);
double r32021 = r32020 + r32009;
double r32022 = r32019 / r32021;
double r32023 = 2.0;
double r32024 = r32023 * r32014;
double r32025 = r32022 / r32024;
double r32026 = -1.0;
double r32027 = r32016 / r32009;
double r32028 = r32026 * r32027;
double r32029 = r32011 ? r32025 : r32028;
return r32029;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 5.85280970215493Initial program 25.3
Simplified25.3
rmApplied flip--25.4
Simplified24.4
if 5.85280970215493 < b Initial program 48.1
Simplified48.1
Taylor expanded around inf 8.9
Final simplification11.7
herbie shell --seed 2019304
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))