\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.080857996826957944331157188783195733762 \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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.235592666799222735329979816784124128026 \cdot 10^{126}:\\
\;\;\;\;\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 r52251 = b;
double r52252 = 0.0;
bool r52253 = r52251 >= r52252;
double r52254 = 2.0;
double r52255 = c;
double r52256 = r52254 * r52255;
double r52257 = -r52251;
double r52258 = r52251 * r52251;
double r52259 = 4.0;
double r52260 = a;
double r52261 = r52259 * r52260;
double r52262 = r52261 * r52255;
double r52263 = r52258 - r52262;
double r52264 = sqrt(r52263);
double r52265 = r52257 - r52264;
double r52266 = r52256 / r52265;
double r52267 = r52257 + r52264;
double r52268 = r52254 * r52260;
double r52269 = r52267 / r52268;
double r52270 = r52253 ? r52266 : r52269;
return r52270;
}
double f(double a, double b, double c) {
double r52271 = b;
double r52272 = -1.080857996826958e+154;
bool r52273 = r52271 <= r52272;
double r52274 = 0.0;
bool r52275 = r52271 >= r52274;
double r52276 = 2.0;
double r52277 = c;
double r52278 = r52276 * r52277;
double r52279 = -r52271;
double r52280 = r52271 * r52271;
double r52281 = 4.0;
double r52282 = a;
double r52283 = r52281 * r52282;
double r52284 = r52283 * r52277;
double r52285 = r52280 - r52284;
double r52286 = sqrt(r52285);
double r52287 = r52279 - r52286;
double r52288 = r52278 / r52287;
double r52289 = r52282 * r52277;
double r52290 = r52289 / r52271;
double r52291 = r52276 * r52290;
double r52292 = 2.0;
double r52293 = r52292 * r52271;
double r52294 = r52291 - r52293;
double r52295 = r52276 * r52282;
double r52296 = r52294 / r52295;
double r52297 = r52275 ? r52288 : r52296;
double r52298 = 1.2355926667992227e+126;
bool r52299 = r52271 <= r52298;
double r52300 = sqrt(r52286);
double r52301 = r52300 * r52300;
double r52302 = r52279 + r52301;
double r52303 = r52302 / r52295;
double r52304 = r52275 ? r52288 : r52303;
double r52305 = r52278 / r52294;
double r52306 = r52279 + r52286;
double r52307 = r52306 / r52295;
double r52308 = r52275 ? r52305 : r52307;
double r52309 = r52299 ? r52304 : r52308;
double r52310 = r52273 ? r52297 : r52309;
return r52310;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.080857996826958e+154Initial program 64.0
rmApplied add-sqr-sqrt64.0
Applied sqrt-prod64.0
Taylor expanded around -inf 11.8
if -1.080857996826958e+154 < b < 1.2355926667992227e+126Initial program 8.3
rmApplied add-sqr-sqrt8.3
Applied sqrt-prod8.4
if 1.2355926667992227e+126 < b Initial program 34.5
Taylor expanded around inf 6.9
Final simplification8.5
herbie shell --seed 2019318
(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))))