\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.3441037991607355 \cdot 10^{+154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(2 \cdot \frac{a \cdot c}{b} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.2036515185994908 \cdot 10^{+104}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right|} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a \cdot c}{b} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r410016 = b;
double r410017 = 0.0;
bool r410018 = r410016 >= r410017;
double r410019 = 2.0;
double r410020 = c;
double r410021 = r410019 * r410020;
double r410022 = -r410016;
double r410023 = r410016 * r410016;
double r410024 = 4.0;
double r410025 = a;
double r410026 = r410024 * r410025;
double r410027 = r410026 * r410020;
double r410028 = r410023 - r410027;
double r410029 = sqrt(r410028);
double r410030 = r410022 - r410029;
double r410031 = r410021 / r410030;
double r410032 = r410022 + r410029;
double r410033 = r410019 * r410025;
double r410034 = r410032 / r410033;
double r410035 = r410018 ? r410031 : r410034;
return r410035;
}
double f(double a, double b, double c) {
double r410036 = b;
double r410037 = -1.3441037991607355e+154;
bool r410038 = r410036 <= r410037;
double r410039 = 0.0;
bool r410040 = r410036 >= r410039;
double r410041 = 2.0;
double r410042 = c;
double r410043 = r410041 * r410042;
double r410044 = -r410036;
double r410045 = r410036 * r410036;
double r410046 = 4.0;
double r410047 = a;
double r410048 = r410046 * r410047;
double r410049 = r410048 * r410042;
double r410050 = r410045 - r410049;
double r410051 = sqrt(r410050);
double r410052 = r410044 - r410051;
double r410053 = r410043 / r410052;
double r410054 = r410047 * r410042;
double r410055 = r410054 / r410036;
double r410056 = r410041 * r410055;
double r410057 = r410056 - r410036;
double r410058 = r410057 + r410044;
double r410059 = r410041 * r410047;
double r410060 = r410058 / r410059;
double r410061 = r410040 ? r410053 : r410060;
double r410062 = 2.2036515185994908e+104;
bool r410063 = r410036 <= r410062;
double r410064 = cbrt(r410050);
double r410065 = sqrt(r410064);
double r410066 = fabs(r410064);
double r410067 = r410065 * r410066;
double r410068 = sqrt(r410067);
double r410069 = sqrt(r410051);
double r410070 = r410068 * r410069;
double r410071 = r410044 - r410070;
double r410072 = r410043 / r410071;
double r410073 = r410051 + r410044;
double r410074 = r410073 / r410059;
double r410075 = r410040 ? r410072 : r410074;
double r410076 = r410055 - r410036;
double r410077 = r410041 * r410076;
double r410078 = r410043 / r410077;
double r410079 = r410040 ? r410078 : r410074;
double r410080 = r410063 ? r410075 : r410079;
double r410081 = r410038 ? r410061 : r410080;
return r410081;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3441037991607355e+154Initial program 60.9
Taylor expanded around -inf 8.9
if -1.3441037991607355e+154 < b < 2.2036515185994908e+104Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
rmApplied add-cube-cbrt8.8
Applied sqrt-prod8.8
Simplified8.8
if 2.2036515185994908e+104 < b Initial program 29.6
rmApplied add-sqr-sqrt29.6
Applied sqrt-prod29.6
Taylor expanded around inf 5.5
Simplified5.5
Final simplification8.0
herbie shell --seed 2019153
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))