\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 -3.208627552530474870689161533322161503574 \cdot 10^{123}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.505453058045537162342913483541210075197 \cdot 10^{91}:\\
\;\;\;\;\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{\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}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\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 r26307 = b;
double r26308 = 0.0;
bool r26309 = r26307 >= r26308;
double r26310 = 2.0;
double r26311 = c;
double r26312 = r26310 * r26311;
double r26313 = -r26307;
double r26314 = r26307 * r26307;
double r26315 = 4.0;
double r26316 = a;
double r26317 = r26315 * r26316;
double r26318 = r26317 * r26311;
double r26319 = r26314 - r26318;
double r26320 = sqrt(r26319);
double r26321 = r26313 - r26320;
double r26322 = r26312 / r26321;
double r26323 = r26313 + r26320;
double r26324 = r26310 * r26316;
double r26325 = r26323 / r26324;
double r26326 = r26309 ? r26322 : r26325;
return r26326;
}
double f(double a, double b, double c) {
double r26327 = b;
double r26328 = -3.208627552530475e+123;
bool r26329 = r26327 <= r26328;
double r26330 = 0.0;
bool r26331 = r26327 >= r26330;
double r26332 = 2.0;
double r26333 = c;
double r26334 = r26332 * r26333;
double r26335 = -r26327;
double r26336 = r26327 * r26327;
double r26337 = 4.0;
double r26338 = a;
double r26339 = r26337 * r26338;
double r26340 = r26339 * r26333;
double r26341 = r26336 - r26340;
double r26342 = sqrt(r26341);
double r26343 = r26335 - r26342;
double r26344 = r26334 / r26343;
double r26345 = r26338 * r26333;
double r26346 = r26345 / r26327;
double r26347 = r26332 * r26346;
double r26348 = r26347 - r26327;
double r26349 = r26335 + r26348;
double r26350 = r26332 * r26338;
double r26351 = r26349 / r26350;
double r26352 = r26331 ? r26344 : r26351;
double r26353 = 2.505453058045537e+91;
bool r26354 = r26327 <= r26353;
double r26355 = sqrt(r26342);
double r26356 = r26355 * r26355;
double r26357 = r26335 + r26356;
double r26358 = r26357 / r26350;
double r26359 = r26331 ? r26344 : r26358;
double r26360 = 2.0;
double r26361 = r26360 * r26327;
double r26362 = r26347 - r26361;
double r26363 = r26334 / r26362;
double r26364 = r26335 + r26342;
double r26365 = r26364 / r26350;
double r26366 = r26331 ? r26363 : r26365;
double r26367 = r26354 ? r26359 : r26366;
double r26368 = r26329 ? r26352 : r26367;
return r26368;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.208627552530475e+123Initial program 52.8
Taylor expanded around -inf 10.8
if -3.208627552530475e+123 < b < 2.505453058045537e+91Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 2.505453058045537e+91 < b Initial program 29.5
Taylor expanded around inf 6.6
Final simplification8.6
herbie shell --seed 2019354 +o rules:numerics
(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))))