\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 -8.00336887744975224 \cdot 10^{118}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{c}{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{2}} \cdot \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}\\
\mathbf{elif}\;b \le 1.96909460888896495 \cdot 10^{161}:\\
\;\;\;\;\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) + \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}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\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 r35259 = b;
double r35260 = 0.0;
bool r35261 = r35259 >= r35260;
double r35262 = 2.0;
double r35263 = c;
double r35264 = r35262 * r35263;
double r35265 = -r35259;
double r35266 = r35259 * r35259;
double r35267 = 4.0;
double r35268 = a;
double r35269 = r35267 * r35268;
double r35270 = r35269 * r35263;
double r35271 = r35266 - r35270;
double r35272 = sqrt(r35271);
double r35273 = r35265 - r35272;
double r35274 = r35264 / r35273;
double r35275 = r35265 + r35272;
double r35276 = r35262 * r35268;
double r35277 = r35275 / r35276;
double r35278 = r35261 ? r35274 : r35277;
return r35278;
}
double f(double a, double b, double c) {
double r35279 = b;
double r35280 = -8.003368877449752e+118;
bool r35281 = r35279 <= r35280;
double r35282 = 0.0;
bool r35283 = r35279 >= r35282;
double r35284 = c;
double r35285 = 2.0;
double r35286 = pow(r35279, r35285);
double r35287 = r35286 - r35286;
double r35288 = 4.0;
double r35289 = a;
double r35290 = r35289 * r35284;
double r35291 = r35288 * r35290;
double r35292 = r35287 + r35291;
double r35293 = 2.0;
double r35294 = r35292 / r35293;
double r35295 = r35284 / r35294;
double r35296 = -r35279;
double r35297 = r35279 * r35279;
double r35298 = r35288 * r35289;
double r35299 = r35298 * r35284;
double r35300 = r35297 - r35299;
double r35301 = sqrt(r35300);
double r35302 = r35296 + r35301;
double r35303 = r35295 * r35302;
double r35304 = 1.0;
double r35305 = r35284 / r35279;
double r35306 = r35279 / r35289;
double r35307 = r35305 - r35306;
double r35308 = r35304 * r35307;
double r35309 = r35283 ? r35303 : r35308;
double r35310 = 1.969094608888965e+161;
bool r35311 = r35279 <= r35310;
double r35312 = r35293 * r35284;
double r35313 = r35296 - r35301;
double r35314 = r35312 / r35313;
double r35315 = cbrt(r35300);
double r35316 = fabs(r35315);
double r35317 = sqrt(r35315);
double r35318 = r35316 * r35317;
double r35319 = r35296 + r35318;
double r35320 = r35293 * r35289;
double r35321 = r35319 / r35320;
double r35322 = r35283 ? r35314 : r35321;
double r35323 = r35290 / r35279;
double r35324 = r35293 * r35323;
double r35325 = r35279 - r35324;
double r35326 = r35296 - r35325;
double r35327 = r35312 / r35326;
double r35328 = r35302 / r35320;
double r35329 = r35283 ? r35327 : r35328;
double r35330 = r35311 ? r35322 : r35329;
double r35331 = r35281 ? r35309 : r35330;
return r35331;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -8.003368877449752e+118Initial program 52.1
Taylor expanded around -inf 9.5
Taylor expanded around 0 2.9
Simplified2.9
rmApplied flip--2.9
Applied associate-/r/2.9
Simplified2.9
if -8.003368877449752e+118 < b < 1.969094608888965e+161Initial program 8.7
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Simplified8.9
if 1.969094608888965e+161 < b Initial program 38.3
Taylor expanded around inf 6.2
Final simplification7.6
herbie shell --seed 2020049
(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))))