\begin{array}{l}
\mathbf{if}\;b \ge 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 2.6416821021932446 \cdot 10^{+83}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, -b\right)}{2}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(c \cdot \frac{a}{b} - b\right) \cdot 2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b}{2}}\\
\end{array}double f(double a, double b, double c) {
double r666839 = b;
double r666840 = 0.0;
bool r666841 = r666839 >= r666840;
double r666842 = -r666839;
double r666843 = r666839 * r666839;
double r666844 = 4.0;
double r666845 = a;
double r666846 = r666844 * r666845;
double r666847 = c;
double r666848 = r666846 * r666847;
double r666849 = r666843 - r666848;
double r666850 = sqrt(r666849);
double r666851 = r666842 - r666850;
double r666852 = 2.0;
double r666853 = r666852 * r666845;
double r666854 = r666851 / r666853;
double r666855 = r666852 * r666847;
double r666856 = r666842 + r666850;
double r666857 = r666855 / r666856;
double r666858 = r666841 ? r666854 : r666857;
return r666858;
}
double f(double a, double b, double c) {
double r666859 = b;
double r666860 = 2.6416821021932446e+83;
bool r666861 = r666859 <= r666860;
double r666862 = 0.0;
bool r666863 = r666859 >= r666862;
double r666864 = -r666859;
double r666865 = c;
double r666866 = a;
double r666867 = -4.0;
double r666868 = r666866 * r666867;
double r666869 = r666859 * r666859;
double r666870 = fma(r666865, r666868, r666869);
double r666871 = sqrt(r666870);
double r666872 = r666864 - r666871;
double r666873 = 2.0;
double r666874 = r666873 * r666866;
double r666875 = r666872 / r666874;
double r666876 = sqrt(r666871);
double r666877 = fma(r666876, r666876, r666864);
double r666878 = r666877 / r666873;
double r666879 = r666865 / r666878;
double r666880 = r666863 ? r666875 : r666879;
double r666881 = r666866 / r666859;
double r666882 = r666865 * r666881;
double r666883 = r666882 - r666859;
double r666884 = r666883 * r666873;
double r666885 = r666884 / r666874;
double r666886 = r666871 - r666859;
double r666887 = r666886 / r666873;
double r666888 = r666865 / r666887;
double r666889 = r666863 ? r666885 : r666888;
double r666890 = r666861 ? r666880 : r666889;
return r666890;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2.6416821021932446e+83Initial program 14.0
Simplified14.0
rmApplied add-sqr-sqrt14.0
Applied sqrt-prod14.1
Applied fma-neg14.0
if 2.6416821021932446e+83 < b Initial program 42.6
Simplified42.5
Taylor expanded around inf 10.5
Simplified3.9
Final simplification12.3
herbie shell --seed 2019156 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))