\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 -2.37749702272254886 \cdot 10^{101}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 4.888690460859863 \cdot 10^{98}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}\\
\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) - \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}double f(double a, double b, double c) {
double r39959 = b;
double r39960 = 0.0;
bool r39961 = r39959 >= r39960;
double r39962 = -r39959;
double r39963 = r39959 * r39959;
double r39964 = 4.0;
double r39965 = a;
double r39966 = r39964 * r39965;
double r39967 = c;
double r39968 = r39966 * r39967;
double r39969 = r39963 - r39968;
double r39970 = sqrt(r39969);
double r39971 = r39962 - r39970;
double r39972 = 2.0;
double r39973 = r39972 * r39965;
double r39974 = r39971 / r39973;
double r39975 = r39972 * r39967;
double r39976 = r39962 + r39970;
double r39977 = r39975 / r39976;
double r39978 = r39961 ? r39974 : r39977;
return r39978;
}
double f(double a, double b, double c) {
double r39979 = b;
double r39980 = -2.377497022722549e+101;
bool r39981 = r39979 <= r39980;
double r39982 = 0.0;
bool r39983 = r39979 >= r39982;
double r39984 = -r39979;
double r39985 = r39979 * r39979;
double r39986 = 4.0;
double r39987 = a;
double r39988 = r39986 * r39987;
double r39989 = c;
double r39990 = r39988 * r39989;
double r39991 = r39985 - r39990;
double r39992 = sqrt(r39991);
double r39993 = r39984 - r39992;
double r39994 = 2.0;
double r39995 = r39994 * r39987;
double r39996 = r39993 / r39995;
double r39997 = r39994 * r39989;
double r39998 = r39987 * r39989;
double r39999 = r39998 / r39979;
double r40000 = r39994 * r39999;
double r40001 = 2.0;
double r40002 = r40001 * r39979;
double r40003 = r40000 - r40002;
double r40004 = r39997 / r40003;
double r40005 = r39983 ? r39996 : r40004;
double r40006 = 4.888690460859863e+98;
bool r40007 = r39979 <= r40006;
double r40008 = sqrt(r39992);
double r40009 = r40008 * r40008;
double r40010 = r39984 - r40009;
double r40011 = r40010 / r39995;
double r40012 = r39984 + r39992;
double r40013 = r39997 / r40012;
double r40014 = r39983 ? r40011 : r40013;
double r40015 = r39979 - r40000;
double r40016 = r39984 - r40015;
double r40017 = r40016 / r39995;
double r40018 = r39983 ? r40017 : r40013;
double r40019 = r40007 ? r40014 : r40018;
double r40020 = r39981 ? r40005 : r40019;
return r40020;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.377497022722549e+101Initial program 31.1
rmApplied add-sqr-sqrt31.1
Applied sqrt-prod31.1
Taylor expanded around -inf 6.8
if -2.377497022722549e+101 < b < 4.888690460859863e+98Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 4.888690460859863e+98 < b Initial program 46.6
Taylor expanded around inf 10.3
Final simplification8.8
herbie shell --seed 2020060 +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)))))))