\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 -4.14626678476860242 \cdot 10^{73}:\\
\;\;\;\;\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 5.8842313368253003 \cdot 10^{103}:\\
\;\;\;\;\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 r34310 = b;
double r34311 = 0.0;
bool r34312 = r34310 >= r34311;
double r34313 = 2.0;
double r34314 = c;
double r34315 = r34313 * r34314;
double r34316 = -r34310;
double r34317 = r34310 * r34310;
double r34318 = 4.0;
double r34319 = a;
double r34320 = r34318 * r34319;
double r34321 = r34320 * r34314;
double r34322 = r34317 - r34321;
double r34323 = sqrt(r34322);
double r34324 = r34316 - r34323;
double r34325 = r34315 / r34324;
double r34326 = r34316 + r34323;
double r34327 = r34313 * r34319;
double r34328 = r34326 / r34327;
double r34329 = r34312 ? r34325 : r34328;
return r34329;
}
double f(double a, double b, double c) {
double r34330 = b;
double r34331 = -4.1462667847686024e+73;
bool r34332 = r34330 <= r34331;
double r34333 = 0.0;
bool r34334 = r34330 >= r34333;
double r34335 = 2.0;
double r34336 = c;
double r34337 = r34335 * r34336;
double r34338 = -r34330;
double r34339 = r34330 * r34330;
double r34340 = 4.0;
double r34341 = a;
double r34342 = r34340 * r34341;
double r34343 = r34342 * r34336;
double r34344 = r34339 - r34343;
double r34345 = sqrt(r34344);
double r34346 = r34338 - r34345;
double r34347 = r34337 / r34346;
double r34348 = r34341 * r34336;
double r34349 = r34348 / r34330;
double r34350 = r34335 * r34349;
double r34351 = 2.0;
double r34352 = r34351 * r34330;
double r34353 = r34350 - r34352;
double r34354 = r34335 * r34341;
double r34355 = r34353 / r34354;
double r34356 = r34334 ? r34347 : r34355;
double r34357 = 5.8842313368253e+103;
bool r34358 = r34330 <= r34357;
double r34359 = sqrt(r34345);
double r34360 = r34359 * r34359;
double r34361 = r34338 + r34360;
double r34362 = r34361 / r34354;
double r34363 = r34334 ? r34347 : r34362;
double r34364 = r34337 / r34353;
double r34365 = r34338 + r34345;
double r34366 = r34365 / r34354;
double r34367 = r34334 ? r34364 : r34366;
double r34368 = r34358 ? r34363 : r34367;
double r34369 = r34332 ? r34356 : r34368;
return r34369;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.1462667847686024e+73Initial program 41.4
rmApplied add-sqr-sqrt41.4
Applied sqrt-prod41.5
Taylor expanded around -inf 9.7
if -4.1462667847686024e+73 < b < 5.8842313368253e+103Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 5.8842313368253e+103 < b Initial program 29.1
rmApplied add-sqr-sqrt29.1
Applied sqrt-prod29.2
Taylor expanded around inf 6.5
Final simplification8.6
herbie shell --seed 2020024 +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))))