\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 -1.3954976233079205 \cdot 10^{88}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.0687144212176309 \cdot 10^{68}:\\
\;\;\;\;\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) + \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\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 r37165 = b;
double r37166 = 0.0;
bool r37167 = r37165 >= r37166;
double r37168 = -r37165;
double r37169 = r37165 * r37165;
double r37170 = 4.0;
double r37171 = a;
double r37172 = r37170 * r37171;
double r37173 = c;
double r37174 = r37172 * r37173;
double r37175 = r37169 - r37174;
double r37176 = sqrt(r37175);
double r37177 = r37168 - r37176;
double r37178 = 2.0;
double r37179 = r37178 * r37171;
double r37180 = r37177 / r37179;
double r37181 = r37178 * r37173;
double r37182 = r37168 + r37176;
double r37183 = r37181 / r37182;
double r37184 = r37167 ? r37180 : r37183;
return r37184;
}
double f(double a, double b, double c) {
double r37185 = b;
double r37186 = -1.3954976233079205e+88;
bool r37187 = r37185 <= r37186;
double r37188 = 0.0;
bool r37189 = r37185 >= r37188;
double r37190 = -r37185;
double r37191 = r37185 * r37185;
double r37192 = 4.0;
double r37193 = a;
double r37194 = r37192 * r37193;
double r37195 = c;
double r37196 = r37194 * r37195;
double r37197 = r37191 - r37196;
double r37198 = sqrt(r37197);
double r37199 = r37190 - r37198;
double r37200 = 2.0;
double r37201 = r37200 * r37193;
double r37202 = r37199 / r37201;
double r37203 = r37200 * r37195;
double r37204 = r37193 * r37195;
double r37205 = r37204 / r37185;
double r37206 = r37200 * r37205;
double r37207 = r37206 - r37185;
double r37208 = r37190 + r37207;
double r37209 = r37203 / r37208;
double r37210 = r37189 ? r37202 : r37209;
double r37211 = 1.0687144212176309e+68;
bool r37212 = r37185 <= r37211;
double r37213 = cbrt(r37197);
double r37214 = fabs(r37213);
double r37215 = sqrt(r37213);
double r37216 = r37214 * r37215;
double r37217 = r37190 + r37216;
double r37218 = r37203 / r37217;
double r37219 = r37189 ? r37202 : r37218;
double r37220 = 1.0;
double r37221 = r37195 / r37185;
double r37222 = r37185 / r37193;
double r37223 = r37221 - r37222;
double r37224 = r37220 * r37223;
double r37225 = r37190 + r37198;
double r37226 = r37203 / r37225;
double r37227 = r37189 ? r37224 : r37226;
double r37228 = r37212 ? r37219 : r37227;
double r37229 = r37187 ? r37210 : r37228;
return r37229;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3954976233079205e+88Initial program 28.4
Taylor expanded around -inf 7.1
if -1.3954976233079205e+88 < b < 1.0687144212176309e+68Initial program 9.1
rmApplied add-cube-cbrt9.3
Applied sqrt-prod9.3
Simplified9.3
if 1.0687144212176309e+68 < b Initial program 42.3
Taylor expanded around inf 11.0
Taylor expanded around 0 4.8
Simplified4.8
Final simplification7.9
herbie shell --seed 2020020
(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)))))))