\begin{array}{l}
\mathbf{if}\;b \ge 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.0027271082217074 \cdot 10^{+110}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;c \cdot \frac{2}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.4995341093291762 \cdot 10^{+100}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}} + \left(-b\right)}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(c \cdot \frac{a}{b} - b\right) \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}}{a \cdot 2}\\
\end{array}double f(double a, double b, double c) {
double r603760 = b;
double r603761 = 0.0;
bool r603762 = r603760 >= r603761;
double r603763 = 2.0;
double r603764 = c;
double r603765 = r603763 * r603764;
double r603766 = -r603760;
double r603767 = r603760 * r603760;
double r603768 = 4.0;
double r603769 = a;
double r603770 = r603768 * r603769;
double r603771 = r603770 * r603764;
double r603772 = r603767 - r603771;
double r603773 = sqrt(r603772);
double r603774 = r603766 - r603773;
double r603775 = r603765 / r603774;
double r603776 = r603766 + r603773;
double r603777 = r603763 * r603769;
double r603778 = r603776 / r603777;
double r603779 = r603762 ? r603775 : r603778;
return r603779;
}
double f(double a, double b, double c) {
double r603780 = b;
double r603781 = -1.0027271082217074e+110;
bool r603782 = r603780 <= r603781;
double r603783 = 0.0;
bool r603784 = r603780 >= r603783;
double r603785 = c;
double r603786 = 2.0;
double r603787 = -r603780;
double r603788 = r603780 * r603780;
double r603789 = a;
double r603790 = 4.0;
double r603791 = r603789 * r603790;
double r603792 = r603791 * r603785;
double r603793 = r603788 - r603792;
double r603794 = sqrt(r603793);
double r603795 = r603787 - r603794;
double r603796 = r603786 / r603795;
double r603797 = r603785 * r603796;
double r603798 = r603785 / r603780;
double r603799 = r603780 / r603789;
double r603800 = r603798 - r603799;
double r603801 = r603784 ? r603797 : r603800;
double r603802 = 1.4995341093291762e+100;
bool r603803 = r603780 <= r603802;
double r603804 = r603786 * r603785;
double r603805 = r603804 / r603795;
double r603806 = sqrt(r603794);
double r603807 = r603806 * r603806;
double r603808 = r603807 + r603787;
double r603809 = r603789 * r603786;
double r603810 = r603808 / r603809;
double r603811 = r603784 ? r603805 : r603810;
double r603812 = r603789 / r603780;
double r603813 = r603785 * r603812;
double r603814 = r603813 - r603780;
double r603815 = r603814 * r603786;
double r603816 = r603804 / r603815;
double r603817 = r603787 + r603794;
double r603818 = r603817 / r603809;
double r603819 = r603784 ? r603816 : r603818;
double r603820 = r603803 ? r603811 : r603819;
double r603821 = r603782 ? r603801 : r603820;
return r603821;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0027271082217074e+110Initial program 46.7
Taylor expanded around -inf 9.7
Simplified3.7
Taylor expanded around 0 3.6
rmApplied associate-/l*3.6
rmApplied associate-/r/3.6
if -1.0027271082217074e+110 < b < 1.4995341093291762e+100Initial program 8.7
rmApplied add-sqr-sqrt8.8
if 1.4995341093291762e+100 < b Initial program 29.7
Taylor expanded around inf 5.9
Simplified2.2
Final simplification6.5
herbie shell --seed 2019151
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))