\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 -2.2724541866372811 \cdot 10^{165}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 3.2649111998892948 \cdot 10^{111}:\\
\;\;\;\;\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{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{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{\frac{\left({b}^{2} - {b}^{2}\right) + \left(4 \cdot a\right) \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r27095 = b;
double r27096 = 0.0;
bool r27097 = r27095 >= r27096;
double r27098 = 2.0;
double r27099 = c;
double r27100 = r27098 * r27099;
double r27101 = -r27095;
double r27102 = r27095 * r27095;
double r27103 = 4.0;
double r27104 = a;
double r27105 = r27103 * r27104;
double r27106 = r27105 * r27099;
double r27107 = r27102 - r27106;
double r27108 = sqrt(r27107);
double r27109 = r27101 - r27108;
double r27110 = r27100 / r27109;
double r27111 = r27101 + r27108;
double r27112 = r27098 * r27104;
double r27113 = r27111 / r27112;
double r27114 = r27097 ? r27110 : r27113;
return r27114;
}
double f(double a, double b, double c) {
double r27115 = b;
double r27116 = -2.272454186637281e+165;
bool r27117 = r27115 <= r27116;
double r27118 = 0.0;
bool r27119 = r27115 >= r27118;
double r27120 = 2.0;
double r27121 = c;
double r27122 = r27120 * r27121;
double r27123 = -r27115;
double r27124 = r27115 * r27115;
double r27125 = 4.0;
double r27126 = a;
double r27127 = r27125 * r27126;
double r27128 = r27127 * r27121;
double r27129 = r27124 - r27128;
double r27130 = sqrt(r27129);
double r27131 = r27123 - r27130;
double r27132 = r27122 / r27131;
double r27133 = r27126 * r27121;
double r27134 = r27133 / r27115;
double r27135 = r27120 * r27134;
double r27136 = 2.0;
double r27137 = r27136 * r27115;
double r27138 = r27135 - r27137;
double r27139 = r27120 * r27126;
double r27140 = r27138 / r27139;
double r27141 = r27119 ? r27132 : r27140;
double r27142 = 3.264911199889295e+111;
bool r27143 = r27115 <= r27142;
double r27144 = cbrt(r27129);
double r27145 = fabs(r27144);
double r27146 = sqrt(r27144);
double r27147 = r27145 * r27146;
double r27148 = r27123 - r27147;
double r27149 = r27122 / r27148;
double r27150 = r27123 + r27130;
double r27151 = r27150 / r27139;
double r27152 = r27119 ? r27149 : r27151;
double r27153 = cbrt(r27115);
double r27154 = r27153 * r27153;
double r27155 = r27126 / r27154;
double r27156 = r27121 / r27153;
double r27157 = r27155 * r27156;
double r27158 = r27120 * r27157;
double r27159 = r27115 - r27158;
double r27160 = r27123 - r27159;
double r27161 = r27122 / r27160;
double r27162 = pow(r27115, r27136);
double r27163 = r27162 - r27162;
double r27164 = r27163 + r27128;
double r27165 = r27164 / r27131;
double r27166 = r27165 / r27139;
double r27167 = r27119 ? r27161 : r27166;
double r27168 = r27143 ? r27152 : r27167;
double r27169 = r27117 ? r27141 : r27168;
return r27169;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.272454186637281e+165Initial program 64.0
Taylor expanded around -inf 10.3
if -2.272454186637281e+165 < b < 3.264911199889295e+111Initial program 9.2
rmApplied add-cube-cbrt9.4
Applied sqrt-prod9.4
Simplified9.4
if 3.264911199889295e+111 < b Initial program 31.6
Taylor expanded around inf 6.2
rmApplied add-cube-cbrt6.2
Applied times-frac2.2
rmApplied flip-+2.2
Simplified2.2
Final simplification8.0
herbie shell --seed 2020047
(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))))