\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 -3.3167628934435038 \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 2.276690291884487 \cdot 10^{80}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, {b}^{2}\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, {b}^{2}\right)}}}\\
\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}{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, b \cdot -2\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \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 r35833 = b;
double r35834 = 0.0;
bool r35835 = r35833 >= r35834;
double r35836 = 2.0;
double r35837 = c;
double r35838 = r35836 * r35837;
double r35839 = -r35833;
double r35840 = r35833 * r35833;
double r35841 = 4.0;
double r35842 = a;
double r35843 = r35841 * r35842;
double r35844 = r35843 * r35837;
double r35845 = r35840 - r35844;
double r35846 = sqrt(r35845);
double r35847 = r35839 - r35846;
double r35848 = r35838 / r35847;
double r35849 = r35839 + r35846;
double r35850 = r35836 * r35842;
double r35851 = r35849 / r35850;
double r35852 = r35835 ? r35848 : r35851;
return r35852;
}
double f(double a, double b, double c) {
double r35853 = b;
double r35854 = -3.316762893443504e+154;
bool r35855 = r35853 <= r35854;
double r35856 = 0.0;
bool r35857 = r35853 >= r35856;
double r35858 = 2.0;
double r35859 = c;
double r35860 = r35858 * r35859;
double r35861 = -r35853;
double r35862 = r35853 * r35853;
double r35863 = 4.0;
double r35864 = a;
double r35865 = r35863 * r35864;
double r35866 = r35865 * r35859;
double r35867 = r35862 - r35866;
double r35868 = sqrt(r35867);
double r35869 = r35861 - r35868;
double r35870 = r35860 / r35869;
double r35871 = r35864 * r35859;
double r35872 = r35871 / r35853;
double r35873 = r35858 * r35872;
double r35874 = r35873 - r35853;
double r35875 = r35861 + r35874;
double r35876 = r35858 * r35864;
double r35877 = r35875 / r35876;
double r35878 = r35857 ? r35870 : r35877;
double r35879 = 2.2766902918844874e+80;
bool r35880 = r35853 <= r35879;
double r35881 = -r35863;
double r35882 = 2.0;
double r35883 = pow(r35853, r35882);
double r35884 = fma(r35881, r35871, r35883);
double r35885 = sqrt(r35884);
double r35886 = sqrt(r35885);
double r35887 = r35886 * r35886;
double r35888 = r35861 - r35887;
double r35889 = r35860 / r35888;
double r35890 = r35861 + r35868;
double r35891 = r35890 / r35876;
double r35892 = r35857 ? r35889 : r35891;
double r35893 = -2.0;
double r35894 = r35853 * r35893;
double r35895 = fma(r35872, r35858, r35894);
double r35896 = r35860 / r35895;
double r35897 = r35857 ? r35896 : r35891;
double r35898 = r35880 ? r35892 : r35897;
double r35899 = r35855 ? r35878 : r35898;
return r35899;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -3.316762893443504e+154Initial program 64.0
Taylor expanded around -inf 11.1
if -3.316762893443504e+154 < b < 2.2766902918844874e+80Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
Simplified8.7
Simplified8.7
if 2.2766902918844874e+80 < b Initial program 28.8
Taylor expanded around inf 7.0
Simplified7.0
Final simplification8.6
herbie shell --seed 2019199 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))