\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 -3.849478339989315956626810795466094434507 \cdot 10^{160}:\\
\;\;\;\;\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 1.02738286211209785784187544728837722875 \cdot 10^{63}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}\\
\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{-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 r26672 = b;
double r26673 = 0.0;
bool r26674 = r26672 >= r26673;
double r26675 = -r26672;
double r26676 = r26672 * r26672;
double r26677 = 4.0;
double r26678 = a;
double r26679 = r26677 * r26678;
double r26680 = c;
double r26681 = r26679 * r26680;
double r26682 = r26676 - r26681;
double r26683 = sqrt(r26682);
double r26684 = r26675 - r26683;
double r26685 = 2.0;
double r26686 = r26685 * r26678;
double r26687 = r26684 / r26686;
double r26688 = r26685 * r26680;
double r26689 = r26675 + r26683;
double r26690 = r26688 / r26689;
double r26691 = r26674 ? r26687 : r26690;
return r26691;
}
double f(double a, double b, double c) {
double r26692 = b;
double r26693 = -3.849478339989316e+160;
bool r26694 = r26692 <= r26693;
double r26695 = 0.0;
bool r26696 = r26692 >= r26695;
double r26697 = -r26692;
double r26698 = r26692 * r26692;
double r26699 = 4.0;
double r26700 = a;
double r26701 = r26699 * r26700;
double r26702 = c;
double r26703 = r26701 * r26702;
double r26704 = r26698 - r26703;
double r26705 = sqrt(r26704);
double r26706 = r26697 - r26705;
double r26707 = 2.0;
double r26708 = r26707 * r26700;
double r26709 = r26706 / r26708;
double r26710 = r26707 * r26702;
double r26711 = r26700 * r26702;
double r26712 = r26711 / r26692;
double r26713 = r26707 * r26712;
double r26714 = r26713 - r26692;
double r26715 = r26697 + r26714;
double r26716 = r26710 / r26715;
double r26717 = r26696 ? r26709 : r26716;
double r26718 = 1.0273828621120979e+63;
bool r26719 = r26692 <= r26718;
double r26720 = sqrt(r26705);
double r26721 = r26720 * r26720;
double r26722 = r26697 - r26721;
double r26723 = r26722 / r26708;
double r26724 = r26697 + r26705;
double r26725 = r26710 / r26724;
double r26726 = r26696 ? r26723 : r26725;
double r26727 = -2.0;
double r26728 = r26727 * r26692;
double r26729 = r26728 / r26708;
double r26730 = r26696 ? r26729 : r26725;
double r26731 = r26719 ? r26726 : r26730;
double r26732 = r26694 ? r26717 : r26731;
return r26732;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.849478339989316e+160Initial program 37.3
Taylor expanded around -inf 6.3
if -3.849478339989316e+160 < b < 1.0273828621120979e+63Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 1.0273828621120979e+63 < b Initial program 39.8
rmApplied add-exp-log41.6
rmApplied pow141.6
Applied log-pow41.6
Applied exp-prod41.7
Simplified41.7
Taylor expanded around inf 5.6
Simplified5.6
Final simplification8.0
herbie shell --seed 2020001
(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)))))))