\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.23272213655908676 \cdot 10^{154}:\\
\;\;\;\;\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 5.57925007375450966 \cdot 10^{51}:\\
\;\;\;\;\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:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r40635 = b;
double r40636 = 0.0;
bool r40637 = r40635 >= r40636;
double r40638 = -r40635;
double r40639 = r40635 * r40635;
double r40640 = 4.0;
double r40641 = a;
double r40642 = r40640 * r40641;
double r40643 = c;
double r40644 = r40642 * r40643;
double r40645 = r40639 - r40644;
double r40646 = sqrt(r40645);
double r40647 = r40638 - r40646;
double r40648 = 2.0;
double r40649 = r40648 * r40641;
double r40650 = r40647 / r40649;
double r40651 = r40648 * r40643;
double r40652 = r40638 + r40646;
double r40653 = r40651 / r40652;
double r40654 = r40637 ? r40650 : r40653;
return r40654;
}
double f(double a, double b, double c) {
double r40655 = b;
double r40656 = -1.2327221365590868e+154;
bool r40657 = r40655 <= r40656;
double r40658 = 0.0;
bool r40659 = r40655 >= r40658;
double r40660 = -r40655;
double r40661 = r40655 * r40655;
double r40662 = 4.0;
double r40663 = a;
double r40664 = r40662 * r40663;
double r40665 = c;
double r40666 = r40664 * r40665;
double r40667 = r40661 - r40666;
double r40668 = sqrt(r40667);
double r40669 = r40660 - r40668;
double r40670 = 2.0;
double r40671 = r40670 * r40663;
double r40672 = r40669 / r40671;
double r40673 = r40670 * r40665;
double r40674 = r40663 * r40665;
double r40675 = r40674 / r40655;
double r40676 = r40670 * r40675;
double r40677 = r40676 - r40655;
double r40678 = r40660 + r40677;
double r40679 = r40673 / r40678;
double r40680 = r40659 ? r40672 : r40679;
double r40681 = 5.5792500737545097e+51;
bool r40682 = r40655 <= r40681;
double r40683 = cbrt(r40667);
double r40684 = fabs(r40683);
double r40685 = sqrt(r40683);
double r40686 = r40684 * r40685;
double r40687 = r40660 + r40686;
double r40688 = r40673 / r40687;
double r40689 = r40659 ? r40672 : r40688;
double r40690 = 2.0;
double r40691 = r40690 * r40655;
double r40692 = r40676 - r40691;
double r40693 = r40692 / r40671;
double r40694 = r40660 + r40668;
double r40695 = r40673 / r40694;
double r40696 = r40659 ? r40693 : r40695;
double r40697 = r40682 ? r40689 : r40696;
double r40698 = r40657 ? r40680 : r40697;
return r40698;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.2327221365590868e+154Initial program 39.6
Taylor expanded around -inf 6.0
if -1.2327221365590868e+154 < b < 5.5792500737545097e+51Initial program 8.5
rmApplied add-cube-cbrt8.8
Applied sqrt-prod8.8
Simplified8.8
if 5.5792500737545097e+51 < b Initial program 38.1
rmApplied add-sqr-sqrt38.1
Applied sqrt-prod38.2
Taylor expanded around inf 11.2
Final simplification8.8
herbie shell --seed 2020018
(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)))))))