\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.33839815589327665 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 6.99142732296556824 \cdot 10^{65}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \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{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}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right)}\\
\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 r35476 = b;
double r35477 = 0.0;
bool r35478 = r35476 >= r35477;
double r35479 = 2.0;
double r35480 = c;
double r35481 = r35479 * r35480;
double r35482 = -r35476;
double r35483 = r35476 * r35476;
double r35484 = 4.0;
double r35485 = a;
double r35486 = r35484 * r35485;
double r35487 = r35486 * r35480;
double r35488 = r35483 - r35487;
double r35489 = sqrt(r35488);
double r35490 = r35482 - r35489;
double r35491 = r35481 / r35490;
double r35492 = r35482 + r35489;
double r35493 = r35479 * r35485;
double r35494 = r35492 / r35493;
double r35495 = r35478 ? r35491 : r35494;
return r35495;
}
double f(double a, double b, double c) {
double r35496 = b;
double r35497 = -1.3383981558932767e+154;
bool r35498 = r35496 <= r35497;
double r35499 = 0.0;
bool r35500 = r35496 >= r35499;
double r35501 = 2.0;
double r35502 = c;
double r35503 = r35501 * r35502;
double r35504 = -r35496;
double r35505 = a;
double r35506 = r35505 * r35502;
double r35507 = r35506 / r35496;
double r35508 = r35501 * r35507;
double r35509 = r35496 - r35508;
double r35510 = r35504 - r35509;
double r35511 = r35503 / r35510;
double r35512 = r35508 - r35496;
double r35513 = r35504 + r35512;
double r35514 = r35501 * r35505;
double r35515 = r35513 / r35514;
double r35516 = r35500 ? r35511 : r35515;
double r35517 = 6.991427322965568e+65;
bool r35518 = r35496 <= r35517;
double r35519 = r35496 * r35496;
double r35520 = 4.0;
double r35521 = r35520 * r35505;
double r35522 = r35521 * r35502;
double r35523 = r35519 - r35522;
double r35524 = sqrt(r35523);
double r35525 = cbrt(r35524);
double r35526 = r35525 * r35525;
double r35527 = r35526 * r35525;
double r35528 = r35504 - r35527;
double r35529 = r35503 / r35528;
double r35530 = r35504 + r35524;
double r35531 = r35530 / r35514;
double r35532 = r35500 ? r35529 : r35531;
double r35533 = cbrt(r35496);
double r35534 = r35533 * r35533;
double r35535 = r35505 / r35534;
double r35536 = r35502 / r35533;
double r35537 = r35535 * r35536;
double r35538 = r35501 * r35537;
double r35539 = r35496 - r35538;
double r35540 = r35504 - r35539;
double r35541 = r35503 / r35540;
double r35542 = r35500 ? r35541 : r35531;
double r35543 = r35518 ? r35532 : r35542;
double r35544 = r35498 ? r35516 : r35543;
return r35544;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3383981558932767e+154Initial program 64.0
Taylor expanded around inf 64.0
Taylor expanded around -inf 12.0
if -1.3383981558932767e+154 < b < 6.991427322965568e+65Initial program 8.6
rmApplied add-cube-cbrt9.0
if 6.991427322965568e+65 < b Initial program 25.9
Taylor expanded around inf 6.8
rmApplied add-cube-cbrt6.8
Applied times-frac3.3
Final simplification7.7
herbie shell --seed 2020057
(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))))