\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 -1.3696490745623736 \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 8.94923280279483684 \cdot 10^{42}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(\frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}, 2, -2 \cdot b\right)}\\
\mathbf{else}:\\
\;\;\;\;\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}\\
\end{array}double f(double a, double b, double c) {
double r42908 = b;
double r42909 = 0.0;
bool r42910 = r42908 >= r42909;
double r42911 = 2.0;
double r42912 = c;
double r42913 = r42911 * r42912;
double r42914 = -r42908;
double r42915 = r42908 * r42908;
double r42916 = 4.0;
double r42917 = a;
double r42918 = r42916 * r42917;
double r42919 = r42918 * r42912;
double r42920 = r42915 - r42919;
double r42921 = sqrt(r42920);
double r42922 = r42914 - r42921;
double r42923 = r42913 / r42922;
double r42924 = r42914 + r42921;
double r42925 = r42911 * r42917;
double r42926 = r42924 / r42925;
double r42927 = r42910 ? r42923 : r42926;
return r42927;
}
double f(double a, double b, double c) {
double r42928 = b;
double r42929 = -1.3696490745623736e+154;
bool r42930 = r42928 <= r42929;
double r42931 = 0.0;
bool r42932 = r42928 >= r42931;
double r42933 = 2.0;
double r42934 = c;
double r42935 = r42933 * r42934;
double r42936 = -r42928;
double r42937 = r42928 * r42928;
double r42938 = 4.0;
double r42939 = a;
double r42940 = r42938 * r42939;
double r42941 = r42940 * r42934;
double r42942 = r42937 - r42941;
double r42943 = sqrt(r42942);
double r42944 = r42936 - r42943;
double r42945 = r42935 / r42944;
double r42946 = r42939 * r42934;
double r42947 = r42946 / r42928;
double r42948 = r42933 * r42947;
double r42949 = r42948 - r42928;
double r42950 = r42936 + r42949;
double r42951 = r42933 * r42939;
double r42952 = r42950 / r42951;
double r42953 = r42932 ? r42945 : r42952;
double r42954 = 8.949232802794837e+42;
bool r42955 = r42928 <= r42954;
double r42956 = cbrt(r42943);
double r42957 = r42956 * r42956;
double r42958 = r42957 * r42956;
double r42959 = r42936 - r42958;
double r42960 = r42935 / r42959;
double r42961 = r42936 + r42943;
double r42962 = r42961 / r42951;
double r42963 = r42932 ? r42960 : r42962;
double r42964 = sqrt(r42928);
double r42965 = r42939 / r42964;
double r42966 = r42934 / r42964;
double r42967 = r42965 * r42966;
double r42968 = -2.0;
double r42969 = r42968 * r42928;
double r42970 = fma(r42967, r42933, r42969);
double r42971 = r42935 / r42970;
double r42972 = sqrt(r42943);
double r42973 = r42972 * r42972;
double r42974 = r42936 + r42973;
double r42975 = r42974 / r42951;
double r42976 = r42932 ? r42971 : r42975;
double r42977 = r42955 ? r42963 : r42976;
double r42978 = r42930 ? r42953 : r42977;
return r42978;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3696490745623736e+154Initial program 64.0
Taylor expanded around -inf 10.5
if -1.3696490745623736e+154 < b < 8.949232802794837e+42Initial program 9.0
rmApplied add-cube-cbrt9.4
if 8.949232802794837e+42 < b Initial program 25.2
Taylor expanded around inf 7.6
Simplified7.6
rmApplied add-sqr-sqrt7.6
Applied times-frac4.0
rmApplied add-sqr-sqrt4.0
Applied sqrt-prod4.0
Final simplification7.9
herbie shell --seed 2020043 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))