\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.434128173054205306503791529718852543763 \cdot 10^{153}:\\
\;\;\;\;\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}{\mathsf{fma}\left(2, \left(a \cdot \left(\sqrt[3]{\frac{c}{b}} \cdot \sqrt[3]{\frac{c}{b}}\right)\right) \cdot \sqrt[3]{\frac{c}{b}}, b \cdot -2\right)}\\
\end{array}\\
\mathbf{elif}\;b \le -5.066042609614386619694957941213132915138 \cdot 10^{-310} \lor \neg \left(b \le 5.031608061939102936286074782173578716838 \cdot 10^{53}\right):\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}\\
\mathbf{elif}\;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}{\frac{\left(a \cdot c\right) \cdot 4}{\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 r32978 = b;
double r32979 = 0.0;
bool r32980 = r32978 >= r32979;
double r32981 = -r32978;
double r32982 = r32978 * r32978;
double r32983 = 4.0;
double r32984 = a;
double r32985 = r32983 * r32984;
double r32986 = c;
double r32987 = r32985 * r32986;
double r32988 = r32982 - r32987;
double r32989 = sqrt(r32988);
double r32990 = r32981 - r32989;
double r32991 = 2.0;
double r32992 = r32991 * r32984;
double r32993 = r32990 / r32992;
double r32994 = r32991 * r32986;
double r32995 = r32981 + r32989;
double r32996 = r32994 / r32995;
double r32997 = r32980 ? r32993 : r32996;
return r32997;
}
double f(double a, double b, double c) {
double r32998 = b;
double r32999 = -1.4341281730542053e+153;
bool r33000 = r32998 <= r32999;
double r33001 = 0.0;
bool r33002 = r32998 >= r33001;
double r33003 = -r32998;
double r33004 = r32998 * r32998;
double r33005 = 4.0;
double r33006 = a;
double r33007 = r33005 * r33006;
double r33008 = c;
double r33009 = r33007 * r33008;
double r33010 = r33004 - r33009;
double r33011 = sqrt(r33010);
double r33012 = r33003 - r33011;
double r33013 = 2.0;
double r33014 = r33013 * r33006;
double r33015 = r33012 / r33014;
double r33016 = r33013 * r33008;
double r33017 = r33008 / r32998;
double r33018 = cbrt(r33017);
double r33019 = r33018 * r33018;
double r33020 = r33006 * r33019;
double r33021 = r33020 * r33018;
double r33022 = -2.0;
double r33023 = r32998 * r33022;
double r33024 = fma(r33013, r33021, r33023);
double r33025 = r33016 / r33024;
double r33026 = r33002 ? r33015 : r33025;
double r33027 = -5.0660426096144e-310;
bool r33028 = r32998 <= r33027;
double r33029 = 5.031608061939103e+53;
bool r33030 = r32998 <= r33029;
double r33031 = !r33030;
bool r33032 = r33028 || r33031;
double r33033 = r33006 * r33008;
double r33034 = r33033 / r32998;
double r33035 = r33013 * r33034;
double r33036 = r32998 - r33035;
double r33037 = r33003 - r33036;
double r33038 = r33037 / r33014;
double r33039 = r33003 + r33011;
double r33040 = r33016 / r33039;
double r33041 = r33002 ? r33038 : r33040;
double r33042 = r33033 * r33005;
double r33043 = r33042 / r33012;
double r33044 = r33016 / r33043;
double r33045 = r33002 ? r33015 : r33044;
double r33046 = r33032 ? r33041 : r33045;
double r33047 = r33000 ? r33026 : r33046;
return r33047;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.4341281730542053e+153Initial program 39.5
rmApplied add-sqr-sqrt39.5
Applied sqrt-prod39.5
Taylor expanded around -inf 6.6
Simplified6.6
rmApplied *-un-lft-identity6.6
Applied times-frac1.4
Simplified1.4
rmApplied add-cube-cbrt1.4
Applied associate-*r*1.4
if -1.4341281730542053e+153 < b < -5.0660426096144e-310 or 5.031608061939103e+53 < b Initial program 18.7
Taylor expanded around inf 8.8
if -5.0660426096144e-310 < b < 5.031608061939103e+53Initial program 10.0
rmApplied add-sqr-sqrt10.0
Applied sqrt-prod10.0
rmApplied flip-+10.0
Simplified10.0
Simplified10.0
Final simplification7.8
herbie shell --seed 2019326 +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)))))))