\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.340453357951692868039545417802281002798 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{\frac{\frac{a}{\sqrt[3]{b}}}{\sqrt[3]{b}}}{\sqrt[3]{\sqrt[3]{b}} \cdot \sqrt[3]{\sqrt[3]{b}}} \cdot \frac{c}{\sqrt[3]{\sqrt[3]{b}}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.269665110513950885787223322334260534415 \cdot 10^{61}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(b - \frac{2 \cdot a}{\frac{b}{c}}\right) - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r42979 = b;
double r42980 = 0.0;
bool r42981 = r42979 >= r42980;
double r42982 = 2.0;
double r42983 = c;
double r42984 = r42982 * r42983;
double r42985 = -r42979;
double r42986 = r42979 * r42979;
double r42987 = 4.0;
double r42988 = a;
double r42989 = r42987 * r42988;
double r42990 = r42989 * r42983;
double r42991 = r42986 - r42990;
double r42992 = sqrt(r42991);
double r42993 = r42985 - r42992;
double r42994 = r42984 / r42993;
double r42995 = r42985 + r42992;
double r42996 = r42982 * r42988;
double r42997 = r42995 / r42996;
double r42998 = r42981 ? r42994 : r42997;
return r42998;
}
double f(double a, double b, double c) {
double r42999 = b;
double r43000 = -1.3404533579516929e+154;
bool r43001 = r42999 <= r43000;
double r43002 = 0.0;
bool r43003 = r42999 >= r43002;
double r43004 = 2.0;
double r43005 = c;
double r43006 = r43004 * r43005;
double r43007 = -r42999;
double r43008 = a;
double r43009 = cbrt(r42999);
double r43010 = r43008 / r43009;
double r43011 = r43010 / r43009;
double r43012 = cbrt(r43009);
double r43013 = r43012 * r43012;
double r43014 = r43011 / r43013;
double r43015 = r43005 / r43012;
double r43016 = r43014 * r43015;
double r43017 = r43004 * r43016;
double r43018 = r42999 - r43017;
double r43019 = r43007 - r43018;
double r43020 = r43006 / r43019;
double r43021 = r43008 * r43005;
double r43022 = r43021 / r42999;
double r43023 = r43004 * r43022;
double r43024 = 2.0;
double r43025 = r43024 * r42999;
double r43026 = r43023 - r43025;
double r43027 = r43004 * r43008;
double r43028 = r43026 / r43027;
double r43029 = r43003 ? r43020 : r43028;
double r43030 = 2.269665110513951e+61;
bool r43031 = r42999 <= r43030;
double r43032 = r42999 * r42999;
double r43033 = 4.0;
double r43034 = r43033 * r43008;
double r43035 = r43034 * r43005;
double r43036 = r43032 - r43035;
double r43037 = cbrt(r43036);
double r43038 = fabs(r43037);
double r43039 = sqrt(r43037);
double r43040 = r43038 * r43039;
double r43041 = r43007 - r43040;
double r43042 = r43006 / r43041;
double r43043 = sqrt(r43036);
double r43044 = r43043 - r42999;
double r43045 = r43044 / r43027;
double r43046 = r43003 ? r43042 : r43045;
double r43047 = r43009 * r43009;
double r43048 = r43008 / r43047;
double r43049 = r43005 / r43009;
double r43050 = r43048 * r43049;
double r43051 = r43004 * r43050;
double r43052 = r42999 - r43051;
double r43053 = r43007 - r43052;
double r43054 = r43006 / r43053;
double r43055 = r42999 / r43005;
double r43056 = r43027 / r43055;
double r43057 = r42999 - r43056;
double r43058 = r43057 - r42999;
double r43059 = r43058 / r43027;
double r43060 = r43003 ? r43054 : r43059;
double r43061 = r43031 ? r43046 : r43060;
double r43062 = r43001 ? r43029 : r43061;
return r43062;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3404533579516929e+154Initial program 64.0
Simplified64.0
Taylor expanded around inf 64.0
rmApplied add-cube-cbrt64.0
Applied times-frac64.0
rmApplied add-cube-cbrt64.0
Applied *-un-lft-identity64.0
Applied times-frac64.0
Applied associate-*r*64.0
Simplified64.0
Taylor expanded around -inf 11.2
if -1.3404533579516929e+154 < b < 2.269665110513951e+61Initial program 9.0
Simplified9.0
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
Simplified9.2
if 2.269665110513951e+61 < b Initial program 26.3
Simplified26.3
Taylor expanded around inf 7.2
rmApplied add-cube-cbrt7.2
Applied times-frac3.9
Taylor expanded around inf 3.9
Simplified3.9
Final simplification7.9
herbie shell --seed 2019304
(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))))