\begin{array}{l}
\mathbf{if}\;b \ge 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 -6.1701110130378705 \cdot 10^{+68}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}\\
\mathbf{elif}\;b \le 8.01638212637136 \cdot 10^{+101}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)}} \cdot \sqrt{\sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{\frac{\sqrt{\sqrt[3]{b \cdot b + \left(a \cdot c\right) \cdot -4}} \cdot \left|\sqrt[3]{b \cdot b + \left(a \cdot c\right) \cdot -4}\right| - b}{c}}\\
\end{array}double f(double a, double b, double c) {
double r860318 = b;
double r860319 = 0.0;
bool r860320 = r860318 >= r860319;
double r860321 = -r860318;
double r860322 = r860318 * r860318;
double r860323 = 4.0;
double r860324 = a;
double r860325 = r860323 * r860324;
double r860326 = c;
double r860327 = r860325 * r860326;
double r860328 = r860322 - r860327;
double r860329 = sqrt(r860328);
double r860330 = r860321 - r860329;
double r860331 = 2.0;
double r860332 = r860331 * r860324;
double r860333 = r860330 / r860332;
double r860334 = r860331 * r860326;
double r860335 = r860321 + r860329;
double r860336 = r860334 / r860335;
double r860337 = r860320 ? r860333 : r860336;
return r860337;
}
double f(double a, double b, double c) {
double r860338 = b;
double r860339 = -6.1701110130378705e+68;
bool r860340 = r860338 <= r860339;
double r860341 = 0.0;
bool r860342 = r860338 >= r860341;
double r860343 = c;
double r860344 = r860343 / r860338;
double r860345 = a;
double r860346 = r860338 / r860345;
double r860347 = r860344 - r860346;
double r860348 = -r860344;
double r860349 = r860342 ? r860347 : r860348;
double r860350 = 8.01638212637136e+101;
bool r860351 = r860338 <= r860350;
double r860352 = -r860338;
double r860353 = r860338 * r860338;
double r860354 = 4.0;
double r860355 = r860354 * r860345;
double r860356 = r860343 * r860355;
double r860357 = r860353 - r860356;
double r860358 = sqrt(r860357);
double r860359 = sqrt(r860358);
double r860360 = r860359 * r860359;
double r860361 = r860352 - r860360;
double r860362 = 2.0;
double r860363 = r860362 * r860345;
double r860364 = r860361 / r860363;
double r860365 = r860343 * r860362;
double r860366 = r860358 + r860352;
double r860367 = r860365 / r860366;
double r860368 = r860342 ? r860364 : r860367;
double r860369 = r860345 * r860343;
double r860370 = -4.0;
double r860371 = r860369 * r860370;
double r860372 = r860353 + r860371;
double r860373 = cbrt(r860372);
double r860374 = sqrt(r860373);
double r860375 = fabs(r860373);
double r860376 = r860374 * r860375;
double r860377 = r860376 - r860338;
double r860378 = r860377 / r860343;
double r860379 = r860362 / r860378;
double r860380 = r860342 ? r860347 : r860379;
double r860381 = r860351 ? r860368 : r860380;
double r860382 = r860340 ? r860349 : r860381;
return r860382;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -6.1701110130378705e+68Initial program 26.5
Taylor expanded around inf 26.5
Simplified26.5
Taylor expanded around inf 26.5
rmApplied associate-/l*26.8
Simplified26.8
Taylor expanded around -inf 3.3
if -6.1701110130378705e+68 < b < 8.01638212637136e+101Initial program 9.4
rmApplied add-sqr-sqrt9.5
if 8.01638212637136e+101 < b Initial program 44.8
Taylor expanded around inf 10.1
Simplified3.8
Taylor expanded around inf 3.7
rmApplied associate-/l*3.7
Simplified3.7
rmApplied add-cube-cbrt3.7
Applied sqrt-prod3.7
Simplified3.7
Final simplification7.0
herbie shell --seed 2019133
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))