\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 -4.204149651109244671037537951320463168697 \cdot 10^{105}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \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}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.112548483872930282376646755087531588032 \cdot 10^{99}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}double f(double a, double b, double c) {
double r63077 = b;
double r63078 = 0.0;
bool r63079 = r63077 >= r63078;
double r63080 = -r63077;
double r63081 = r63077 * r63077;
double r63082 = 4.0;
double r63083 = a;
double r63084 = r63082 * r63083;
double r63085 = c;
double r63086 = r63084 * r63085;
double r63087 = r63081 - r63086;
double r63088 = sqrt(r63087);
double r63089 = r63080 - r63088;
double r63090 = 2.0;
double r63091 = r63090 * r63083;
double r63092 = r63089 / r63091;
double r63093 = r63090 * r63085;
double r63094 = r63080 + r63088;
double r63095 = r63093 / r63094;
double r63096 = r63079 ? r63092 : r63095;
return r63096;
}
double f(double a, double b, double c) {
double r63097 = b;
double r63098 = -4.2041496511092447e+105;
bool r63099 = r63097 <= r63098;
double r63100 = 0.0;
bool r63101 = r63097 >= r63100;
double r63102 = -r63097;
double r63103 = r63097 * r63097;
double r63104 = 4.0;
double r63105 = a;
double r63106 = r63104 * r63105;
double r63107 = c;
double r63108 = r63106 * r63107;
double r63109 = r63103 - r63108;
double r63110 = sqrt(r63109);
double r63111 = sqrt(r63110);
double r63112 = r63111 * r63111;
double r63113 = r63102 - r63112;
double r63114 = 2.0;
double r63115 = r63114 * r63105;
double r63116 = r63113 / r63115;
double r63117 = r63114 * r63107;
double r63118 = cbrt(r63097);
double r63119 = r63118 * r63118;
double r63120 = r63105 / r63119;
double r63121 = r63107 / r63118;
double r63122 = r63120 * r63121;
double r63123 = r63114 * r63122;
double r63124 = r63123 - r63097;
double r63125 = r63102 + r63124;
double r63126 = r63117 / r63125;
double r63127 = r63101 ? r63116 : r63126;
double r63128 = 1.1125484838729303e+99;
bool r63129 = r63097 <= r63128;
double r63130 = r63102 - r63110;
double r63131 = r63130 / r63115;
double r63132 = r63102 + r63112;
double r63133 = r63117 / r63132;
double r63134 = r63101 ? r63131 : r63133;
double r63135 = r63105 * r63107;
double r63136 = r63135 / r63097;
double r63137 = r63114 * r63136;
double r63138 = 2.0;
double r63139 = r63138 * r63097;
double r63140 = r63137 - r63139;
double r63141 = r63140 / r63115;
double r63142 = r63102 + r63110;
double r63143 = r63117 / r63142;
double r63144 = r63101 ? r63141 : r63143;
double r63145 = r63129 ? r63134 : r63144;
double r63146 = r63099 ? r63127 : r63145;
return r63146;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.2041496511092447e+105Initial program 29.9
Taylor expanded around -inf 6.9
rmApplied add-cube-cbrt6.9
Applied times-frac2.7
rmApplied add-sqr-sqrt2.7
Applied sqrt-prod2.7
if -4.2041496511092447e+105 < b < 1.1125484838729303e+99Initial program 9.2
rmApplied add-sqr-sqrt9.2
Applied sqrt-prod9.3
if 1.1125484838729303e+99 < b Initial program 47.2
Taylor expanded around inf 10.1
Final simplification7.9
herbie shell --seed 2019353 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))