\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 -8.449931413972273401811954863432979708195 \cdot 10^{134}:\\
\;\;\;\;\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}{2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.387566822958628032515586415325718873832 \cdot 10^{129}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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 r28611 = b;
double r28612 = 0.0;
bool r28613 = r28611 >= r28612;
double r28614 = -r28611;
double r28615 = r28611 * r28611;
double r28616 = 4.0;
double r28617 = a;
double r28618 = r28616 * r28617;
double r28619 = c;
double r28620 = r28618 * r28619;
double r28621 = r28615 - r28620;
double r28622 = sqrt(r28621);
double r28623 = r28614 - r28622;
double r28624 = 2.0;
double r28625 = r28624 * r28617;
double r28626 = r28623 / r28625;
double r28627 = r28624 * r28619;
double r28628 = r28614 + r28622;
double r28629 = r28627 / r28628;
double r28630 = r28613 ? r28626 : r28629;
return r28630;
}
double f(double a, double b, double c) {
double r28631 = b;
double r28632 = -8.449931413972273e+134;
bool r28633 = r28631 <= r28632;
double r28634 = 0.0;
bool r28635 = r28631 >= r28634;
double r28636 = -r28631;
double r28637 = r28631 * r28631;
double r28638 = 4.0;
double r28639 = a;
double r28640 = r28638 * r28639;
double r28641 = c;
double r28642 = r28640 * r28641;
double r28643 = r28637 - r28642;
double r28644 = sqrt(r28643);
double r28645 = r28636 - r28644;
double r28646 = 2.0;
double r28647 = r28646 * r28639;
double r28648 = r28645 / r28647;
double r28649 = r28646 * r28641;
double r28650 = cbrt(r28631);
double r28651 = r28650 * r28650;
double r28652 = r28639 / r28651;
double r28653 = r28641 / r28650;
double r28654 = r28652 * r28653;
double r28655 = r28646 * r28654;
double r28656 = 2.0;
double r28657 = r28656 * r28631;
double r28658 = r28655 - r28657;
double r28659 = r28649 / r28658;
double r28660 = r28635 ? r28648 : r28659;
double r28661 = 1.387566822958628e+129;
bool r28662 = r28631 <= r28661;
double r28663 = cbrt(r28643);
double r28664 = fabs(r28663);
double r28665 = sqrt(r28663);
double r28666 = r28664 * r28665;
double r28667 = r28636 - r28666;
double r28668 = r28667 / r28647;
double r28669 = r28636 + r28644;
double r28670 = r28649 / r28669;
double r28671 = r28635 ? r28668 : r28670;
double r28672 = r28639 * r28641;
double r28673 = r28672 / r28631;
double r28674 = r28646 * r28673;
double r28675 = r28631 - r28674;
double r28676 = r28636 - r28675;
double r28677 = r28676 / r28647;
double r28678 = r28635 ? r28677 : r28670;
double r28679 = r28662 ? r28671 : r28678;
double r28680 = r28633 ? r28660 : r28679;
return r28680;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -8.449931413972273e+134Initial program 33.9
Taylor expanded around -inf 6.5
rmApplied add-cube-cbrt6.5
Applied times-frac1.9
if -8.449931413972273e+134 < b < 1.387566822958628e+129Initial program 8.1
rmApplied add-cube-cbrt8.3
Applied sqrt-prod8.3
Simplified8.3
if 1.387566822958628e+129 < b Initial program 54.5
Taylor expanded around inf 10.4
Final simplification7.3
herbie shell --seed 2019356
(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)))))))