\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 -3.6617740146252804 \cdot 10^{128}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.6651850726010021 \cdot 10^{84}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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 r43042 = b;
double r43043 = 0.0;
bool r43044 = r43042 >= r43043;
double r43045 = -r43042;
double r43046 = r43042 * r43042;
double r43047 = 4.0;
double r43048 = a;
double r43049 = r43047 * r43048;
double r43050 = c;
double r43051 = r43049 * r43050;
double r43052 = r43046 - r43051;
double r43053 = sqrt(r43052);
double r43054 = r43045 - r43053;
double r43055 = 2.0;
double r43056 = r43055 * r43048;
double r43057 = r43054 / r43056;
double r43058 = r43055 * r43050;
double r43059 = r43045 + r43053;
double r43060 = r43058 / r43059;
double r43061 = r43044 ? r43057 : r43060;
return r43061;
}
double f(double a, double b, double c) {
double r43062 = b;
double r43063 = -3.6617740146252804e+128;
bool r43064 = r43062 <= r43063;
double r43065 = 0.0;
bool r43066 = r43062 >= r43065;
double r43067 = -r43062;
double r43068 = r43062 * r43062;
double r43069 = 4.0;
double r43070 = a;
double r43071 = r43069 * r43070;
double r43072 = c;
double r43073 = r43071 * r43072;
double r43074 = r43068 - r43073;
double r43075 = sqrt(r43074);
double r43076 = r43067 - r43075;
double r43077 = 2.0;
double r43078 = r43077 * r43070;
double r43079 = r43076 / r43078;
double r43080 = r43077 * r43072;
double r43081 = r43070 * r43072;
double r43082 = r43081 / r43062;
double r43083 = r43077 * r43082;
double r43084 = r43083 - r43062;
double r43085 = r43067 + r43084;
double r43086 = r43080 / r43085;
double r43087 = r43066 ? r43079 : r43086;
double r43088 = 3.665185072601002e+84;
bool r43089 = r43062 <= r43088;
double r43090 = cbrt(r43074);
double r43091 = fabs(r43090);
double r43092 = sqrt(r43090);
double r43093 = r43091 * r43092;
double r43094 = r43067 - r43093;
double r43095 = r43094 / r43078;
double r43096 = r43067 + r43075;
double r43097 = r43080 / r43096;
double r43098 = r43066 ? r43095 : r43097;
double r43099 = r43062 - r43083;
double r43100 = r43067 - r43099;
double r43101 = r43100 / r43078;
double r43102 = r43066 ? r43101 : r43097;
double r43103 = r43089 ? r43098 : r43102;
double r43104 = r43064 ? r43087 : r43103;
return r43104;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.6617740146252804e+128Initial program 33.7
Taylor expanded around -inf 7.3
if -3.6617740146252804e+128 < b < 3.665185072601002e+84Initial program 8.9
rmApplied add-cube-cbrt9.1
Applied sqrt-prod9.1
Simplified9.1
if 3.665185072601002e+84 < b Initial program 43.2
Taylor expanded around inf 10.1
Final simplification8.9
herbie shell --seed 2020056
(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)))))))