\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 -9.912992538019245038104285116114079132063 \cdot 10^{108}:\\
\;\;\;\;\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{c \cdot 2}{\mathsf{fma}\left(-2, b, \frac{2 \cdot \left(a \cdot c\right)}{b}\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.042426094136287989665052757228371789389 \cdot 10^{152}:\\
\;\;\;\;\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{c \cdot 2}{\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{\left(-b\right) - \left(b - \frac{a \cdot c}{b} \cdot 2\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1225818 = b;
double r1225819 = 0.0;
bool r1225820 = r1225818 >= r1225819;
double r1225821 = -r1225818;
double r1225822 = r1225818 * r1225818;
double r1225823 = 4.0;
double r1225824 = a;
double r1225825 = r1225823 * r1225824;
double r1225826 = c;
double r1225827 = r1225825 * r1225826;
double r1225828 = r1225822 - r1225827;
double r1225829 = sqrt(r1225828);
double r1225830 = r1225821 - r1225829;
double r1225831 = 2.0;
double r1225832 = r1225831 * r1225824;
double r1225833 = r1225830 / r1225832;
double r1225834 = r1225831 * r1225826;
double r1225835 = r1225821 + r1225829;
double r1225836 = r1225834 / r1225835;
double r1225837 = r1225820 ? r1225833 : r1225836;
return r1225837;
}
double f(double a, double b, double c) {
double r1225838 = b;
double r1225839 = -9.912992538019245e+108;
bool r1225840 = r1225838 <= r1225839;
double r1225841 = 0.0;
bool r1225842 = r1225838 >= r1225841;
double r1225843 = -r1225838;
double r1225844 = r1225838 * r1225838;
double r1225845 = 4.0;
double r1225846 = a;
double r1225847 = r1225845 * r1225846;
double r1225848 = c;
double r1225849 = r1225847 * r1225848;
double r1225850 = r1225844 - r1225849;
double r1225851 = sqrt(r1225850);
double r1225852 = r1225843 - r1225851;
double r1225853 = 2.0;
double r1225854 = r1225853 * r1225846;
double r1225855 = r1225852 / r1225854;
double r1225856 = r1225848 * r1225853;
double r1225857 = -2.0;
double r1225858 = r1225846 * r1225848;
double r1225859 = r1225853 * r1225858;
double r1225860 = r1225859 / r1225838;
double r1225861 = fma(r1225857, r1225838, r1225860);
double r1225862 = r1225856 / r1225861;
double r1225863 = r1225842 ? r1225855 : r1225862;
double r1225864 = 1.042426094136288e+152;
bool r1225865 = r1225838 <= r1225864;
double r1225866 = sqrt(r1225851);
double r1225867 = r1225866 * r1225866;
double r1225868 = r1225843 + r1225867;
double r1225869 = r1225856 / r1225868;
double r1225870 = r1225842 ? r1225855 : r1225869;
double r1225871 = r1225858 / r1225838;
double r1225872 = r1225871 * r1225853;
double r1225873 = r1225838 - r1225872;
double r1225874 = r1225843 - r1225873;
double r1225875 = r1225874 / r1225854;
double r1225876 = r1225851 + r1225843;
double r1225877 = r1225856 / r1225876;
double r1225878 = r1225842 ? r1225875 : r1225877;
double r1225879 = r1225865 ? r1225870 : r1225878;
double r1225880 = r1225840 ? r1225863 : r1225879;
return r1225880;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -9.912992538019245e+108Initial program 31.3
rmApplied add-sqr-sqrt31.3
Applied sqrt-prod31.3
Taylor expanded around -inf 6.6
Simplified6.6
if -9.912992538019245e+108 < b < 1.042426094136288e+152Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 1.042426094136288e+152 < b Initial program 62.9
Taylor expanded around inf 11.0
Final simplification8.6
herbie shell --seed 2019172 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))