\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.2495719643022808 \cdot 10^{135}:\\
\;\;\;\;\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 \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 7.35146897748971308 \cdot 10^{79}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{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 r28818 = b;
double r28819 = 0.0;
bool r28820 = r28818 >= r28819;
double r28821 = -r28818;
double r28822 = r28818 * r28818;
double r28823 = 4.0;
double r28824 = a;
double r28825 = r28823 * r28824;
double r28826 = c;
double r28827 = r28825 * r28826;
double r28828 = r28822 - r28827;
double r28829 = sqrt(r28828);
double r28830 = r28821 - r28829;
double r28831 = 2.0;
double r28832 = r28831 * r28824;
double r28833 = r28830 / r28832;
double r28834 = r28831 * r28826;
double r28835 = r28821 + r28829;
double r28836 = r28834 / r28835;
double r28837 = r28820 ? r28833 : r28836;
return r28837;
}
double f(double a, double b, double c) {
double r28838 = b;
double r28839 = -1.2495719643022808e+135;
bool r28840 = r28838 <= r28839;
double r28841 = 0.0;
bool r28842 = r28838 >= r28841;
double r28843 = -r28838;
double r28844 = r28838 * r28838;
double r28845 = 4.0;
double r28846 = a;
double r28847 = r28845 * r28846;
double r28848 = c;
double r28849 = r28847 * r28848;
double r28850 = r28844 - r28849;
double r28851 = sqrt(r28850);
double r28852 = r28843 - r28851;
double r28853 = 2.0;
double r28854 = r28853 * r28846;
double r28855 = r28852 / r28854;
double r28856 = r28853 * r28848;
double r28857 = r28846 * r28848;
double r28858 = r28857 / r28838;
double r28859 = r28853 * r28858;
double r28860 = 2.0;
double r28861 = r28860 * r28838;
double r28862 = r28859 - r28861;
double r28863 = r28856 / r28862;
double r28864 = r28842 ? r28855 : r28863;
double r28865 = 7.351468977489713e+79;
bool r28866 = r28838 <= r28865;
double r28867 = sqrt(r28851);
double r28868 = r28867 * r28867;
double r28869 = r28843 + r28868;
double r28870 = r28856 / r28869;
double r28871 = r28842 ? r28855 : r28870;
double r28872 = r28862 / r28854;
double r28873 = r28843 + r28851;
double r28874 = r28856 / r28873;
double r28875 = r28842 ? r28872 : r28874;
double r28876 = r28866 ? r28871 : r28875;
double r28877 = r28840 ? r28864 : r28876;
return r28877;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.2495719643022808e+135Initial program 34.7
rmApplied add-sqr-sqrt34.7
Applied sqrt-prod34.7
Taylor expanded around -inf 5.5
if -1.2495719643022808e+135 < b < 7.351468977489713e+79Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 7.351468977489713e+79 < b Initial program 41.8
rmApplied add-sqr-sqrt41.8
Applied sqrt-prod41.9
Taylor expanded around inf 10.2
Final simplification8.5
herbie shell --seed 2020003 +o rules:numerics
(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)))))))