\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.3696490745623736 \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{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 8.94923280279483684 \cdot 10^{42}:\\
\;\;\;\;\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}{2 \cdot \frac{a}{\frac{b}{c}} - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\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}}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r40648 = b;
double r40649 = 0.0;
bool r40650 = r40648 >= r40649;
double r40651 = 2.0;
double r40652 = c;
double r40653 = r40651 * r40652;
double r40654 = -r40648;
double r40655 = r40648 * r40648;
double r40656 = 4.0;
double r40657 = a;
double r40658 = r40656 * r40657;
double r40659 = r40658 * r40652;
double r40660 = r40655 - r40659;
double r40661 = sqrt(r40660);
double r40662 = r40654 - r40661;
double r40663 = r40653 / r40662;
double r40664 = r40654 + r40661;
double r40665 = r40651 * r40657;
double r40666 = r40664 / r40665;
double r40667 = r40650 ? r40663 : r40666;
return r40667;
}
double f(double a, double b, double c) {
double r40668 = b;
double r40669 = -1.3696490745623736e+154;
bool r40670 = r40668 <= r40669;
double r40671 = 0.0;
bool r40672 = r40668 >= r40671;
double r40673 = 2.0;
double r40674 = c;
double r40675 = r40673 * r40674;
double r40676 = -r40668;
double r40677 = r40668 * r40668;
double r40678 = 4.0;
double r40679 = a;
double r40680 = r40678 * r40679;
double r40681 = r40680 * r40674;
double r40682 = r40677 - r40681;
double r40683 = sqrt(r40682);
double r40684 = r40676 - r40683;
double r40685 = r40675 / r40684;
double r40686 = r40679 * r40674;
double r40687 = r40686 / r40668;
double r40688 = r40673 * r40687;
double r40689 = r40688 - r40668;
double r40690 = r40676 + r40689;
double r40691 = r40673 * r40679;
double r40692 = r40690 / r40691;
double r40693 = r40672 ? r40685 : r40692;
double r40694 = 8.949232802794837e+42;
bool r40695 = r40668 <= r40694;
double r40696 = cbrt(r40683);
double r40697 = r40696 * r40696;
double r40698 = r40697 * r40696;
double r40699 = r40676 - r40698;
double r40700 = r40675 / r40699;
double r40701 = r40676 + r40683;
double r40702 = r40701 / r40691;
double r40703 = r40672 ? r40700 : r40702;
double r40704 = r40668 / r40674;
double r40705 = r40679 / r40704;
double r40706 = r40673 * r40705;
double r40707 = 2.0;
double r40708 = r40707 * r40668;
double r40709 = r40706 - r40708;
double r40710 = r40675 / r40709;
double r40711 = sqrt(r40683);
double r40712 = r40711 * r40711;
double r40713 = r40676 + r40712;
double r40714 = r40713 / r40691;
double r40715 = r40672 ? r40710 : r40714;
double r40716 = r40695 ? r40703 : r40715;
double r40717 = r40670 ? r40693 : r40716;
return r40717;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3696490745623736e+154Initial program 64.0
Taylor expanded around -inf 10.5
if -1.3696490745623736e+154 < b < 8.949232802794837e+42Initial program 9.0
rmApplied add-cube-cbrt9.4
if 8.949232802794837e+42 < b Initial program 25.2
Taylor expanded around inf 7.6
rmApplied associate-/l*4.0
rmApplied add-sqr-sqrt4.0
Applied sqrt-prod4.0
Final simplification7.9
herbie shell --seed 2020043
(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))))