\begin{array}{l}
\mathbf{if}\;b \ge 0.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.33791852996056488 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 6.7711658147871089 \cdot 10^{125}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r37481 = b;
double r37482 = 0.0;
bool r37483 = r37481 >= r37482;
double r37484 = 2.0;
double r37485 = c;
double r37486 = r37484 * r37485;
double r37487 = -r37481;
double r37488 = r37481 * r37481;
double r37489 = 4.0;
double r37490 = a;
double r37491 = r37489 * r37490;
double r37492 = r37491 * r37485;
double r37493 = r37488 - r37492;
double r37494 = sqrt(r37493);
double r37495 = r37487 - r37494;
double r37496 = r37486 / r37495;
double r37497 = r37487 + r37494;
double r37498 = r37484 * r37490;
double r37499 = r37497 / r37498;
double r37500 = r37483 ? r37496 : r37499;
return r37500;
}
double f(double a, double b, double c) {
double r37501 = b;
double r37502 = -1.3379185299605649e+154;
bool r37503 = r37501 <= r37502;
double r37504 = 0.0;
bool r37505 = r37501 >= r37504;
double r37506 = 2.0;
double r37507 = c;
double r37508 = r37506 * r37507;
double r37509 = -r37501;
double r37510 = r37501 * r37501;
double r37511 = 4.0;
double r37512 = a;
double r37513 = r37511 * r37512;
double r37514 = r37513 * r37507;
double r37515 = r37510 - r37514;
double r37516 = sqrt(r37515);
double r37517 = r37509 - r37516;
double r37518 = r37508 / r37517;
double r37519 = r37512 * r37507;
double r37520 = r37519 / r37501;
double r37521 = r37506 * r37520;
double r37522 = 2.0;
double r37523 = r37522 * r37501;
double r37524 = r37521 - r37523;
double r37525 = r37506 * r37512;
double r37526 = r37524 / r37525;
double r37527 = r37505 ? r37518 : r37526;
double r37528 = 6.771165814787109e+125;
bool r37529 = r37501 <= r37528;
double r37530 = sqrt(r37516);
double r37531 = r37530 * r37530;
double r37532 = r37509 - r37531;
double r37533 = r37508 / r37532;
double r37534 = r37509 + r37516;
double r37535 = r37534 / r37525;
double r37536 = r37505 ? r37533 : r37535;
double r37537 = r37508 / r37524;
double r37538 = r37505 ? r37537 : r37535;
double r37539 = r37529 ? r37536 : r37538;
double r37540 = r37503 ? r37527 : r37539;
return r37540;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3379185299605649e+154Initial program 64.0
Taylor expanded around -inf 11.4
if -1.3379185299605649e+154 < b < 6.771165814787109e+125Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 6.771165814787109e+125 < b Initial program 31.3
rmApplied add-sqr-sqrt31.3
Applied sqrt-prod31.3
Taylor expanded around inf 5.7
Final simplification8.5
herbie shell --seed 2020083
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))