\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.3437359308500901 \cdot 10^{154}:\\
\;\;\;\;\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 1.31998195619180524 \cdot 10^{84}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\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}{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 r24294 = b;
double r24295 = 0.0;
bool r24296 = r24294 >= r24295;
double r24297 = 2.0;
double r24298 = c;
double r24299 = r24297 * r24298;
double r24300 = -r24294;
double r24301 = r24294 * r24294;
double r24302 = 4.0;
double r24303 = a;
double r24304 = r24302 * r24303;
double r24305 = r24304 * r24298;
double r24306 = r24301 - r24305;
double r24307 = sqrt(r24306);
double r24308 = r24300 - r24307;
double r24309 = r24299 / r24308;
double r24310 = r24300 + r24307;
double r24311 = r24297 * r24303;
double r24312 = r24310 / r24311;
double r24313 = r24296 ? r24309 : r24312;
return r24313;
}
double f(double a, double b, double c) {
double r24314 = b;
double r24315 = -1.34373593085009e+154;
bool r24316 = r24314 <= r24315;
double r24317 = 0.0;
bool r24318 = r24314 >= r24317;
double r24319 = 2.0;
double r24320 = c;
double r24321 = r24319 * r24320;
double r24322 = -r24314;
double r24323 = r24314 * r24314;
double r24324 = 4.0;
double r24325 = a;
double r24326 = r24324 * r24325;
double r24327 = r24326 * r24320;
double r24328 = r24323 - r24327;
double r24329 = sqrt(r24328);
double r24330 = r24322 - r24329;
double r24331 = r24321 / r24330;
double r24332 = r24325 * r24320;
double r24333 = r24332 / r24314;
double r24334 = r24319 * r24333;
double r24335 = r24334 - r24314;
double r24336 = r24322 + r24335;
double r24337 = r24319 * r24325;
double r24338 = r24336 / r24337;
double r24339 = r24318 ? r24331 : r24338;
double r24340 = 1.3199819561918052e+84;
bool r24341 = r24314 <= r24340;
double r24342 = sqrt(r24329);
double r24343 = r24342 * r24342;
double r24344 = r24322 - r24343;
double r24345 = r24321 / r24344;
double r24346 = r24322 + r24329;
double r24347 = r24346 / r24337;
double r24348 = r24318 ? r24345 : r24347;
double r24349 = 2.0;
double r24350 = r24349 * r24314;
double r24351 = r24334 - r24350;
double r24352 = r24321 / r24351;
double r24353 = r24318 ? r24352 : r24347;
double r24354 = r24341 ? r24348 : r24353;
double r24355 = r24316 ? r24339 : r24354;
return r24355;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.34373593085009e+154Initial program 64.0
Taylor expanded around -inf 12.5
if -1.34373593085009e+154 < b < 1.3199819561918052e+84Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 1.3199819561918052e+84 < b Initial program 28.6
rmApplied add-sqr-sqrt28.6
Applied sqrt-prod28.6
Taylor expanded around inf 6.5
Final simplification8.8
herbie shell --seed 2020056
(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))))