\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -3.926786644154185202910922585243147827538 \cdot 10^{123}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \left(2 \cdot \frac{a}{\frac{b}{c}} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r931981 = b;
double r931982 = 0.0;
bool r931983 = r931981 >= r931982;
double r931984 = -r931981;
double r931985 = r931981 * r931981;
double r931986 = 4.0;
double r931987 = a;
double r931988 = r931986 * r931987;
double r931989 = c;
double r931990 = r931988 * r931989;
double r931991 = r931985 - r931990;
double r931992 = sqrt(r931991);
double r931993 = r931984 - r931992;
double r931994 = 2.0;
double r931995 = r931994 * r931987;
double r931996 = r931993 / r931995;
double r931997 = r931994 * r931989;
double r931998 = r931984 + r931992;
double r931999 = r931997 / r931998;
double r932000 = r931983 ? r931996 : r931999;
return r932000;
}
double f(double a, double b, double c) {
double r932001 = b;
double r932002 = -3.926786644154185e+123;
bool r932003 = r932001 <= r932002;
double r932004 = 0.0;
bool r932005 = r932001 >= r932004;
double r932006 = -r932001;
double r932007 = r932001 * r932001;
double r932008 = 4.0;
double r932009 = a;
double r932010 = r932008 * r932009;
double r932011 = c;
double r932012 = r932010 * r932011;
double r932013 = r932007 - r932012;
double r932014 = sqrt(r932013);
double r932015 = r932006 - r932014;
double r932016 = 2.0;
double r932017 = r932016 * r932009;
double r932018 = r932015 / r932017;
double r932019 = r932011 * r932016;
double r932020 = r932001 / r932011;
double r932021 = r932009 / r932020;
double r932022 = r932016 * r932021;
double r932023 = r932022 - r932001;
double r932024 = r932006 + r932023;
double r932025 = r932019 / r932024;
double r932026 = r932005 ? r932018 : r932025;
double r932027 = 3.628799960716312e+50;
bool r932028 = r932001 <= r932027;
double r932029 = cbrt(r932014);
double r932030 = r932029 * r932029;
double r932031 = sqrt(r932014);
double r932032 = r932031 * r932031;
double r932033 = cbrt(r932032);
double r932034 = r932030 * r932033;
double r932035 = r932034 + r932006;
double r932036 = r932019 / r932035;
double r932037 = r932005 ? r932018 : r932036;
double r932038 = r932009 * r932011;
double r932039 = r932038 / r932001;
double r932040 = r932016 * r932039;
double r932041 = r932001 - r932040;
double r932042 = r932006 - r932041;
double r932043 = r932042 / r932017;
double r932044 = r932014 + r932006;
double r932045 = r932019 / r932044;
double r932046 = r932005 ? r932043 : r932045;
double r932047 = r932028 ? r932037 : r932046;
double r932048 = r932003 ? r932026 : r932047;
return r932048;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.926786644154185e+123Initial program 32.2
Taylor expanded around -inf 5.6
rmApplied associate-/l*1.6
if -3.926786644154185e+123 < b < 3.628799960716312e+50Initial program 8.8
rmApplied add-cube-cbrt9.2
rmApplied add-sqr-sqrt9.2
Applied sqrt-prod9.2
if 3.628799960716312e+50 < b Initial program 38.2
Taylor expanded around inf 11.3
Final simplification8.0
herbie shell --seed 2019179
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))