\begin{array}{l}
\mathbf{if}\;b \ge 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.6955952414049898 \cdot 10^{+140}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\frac{c}{\frac{b}{a}} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.0278279293485846 \cdot 10^{+87}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \mathsf{fma}\left(-2, \left(\frac{a}{\frac{b}{c}}\right), b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r661274 = b;
double r661275 = 0.0;
bool r661276 = r661274 >= r661275;
double r661277 = 2.0;
double r661278 = c;
double r661279 = r661277 * r661278;
double r661280 = -r661274;
double r661281 = r661274 * r661274;
double r661282 = 4.0;
double r661283 = a;
double r661284 = r661282 * r661283;
double r661285 = r661284 * r661278;
double r661286 = r661281 - r661285;
double r661287 = sqrt(r661286);
double r661288 = r661280 - r661287;
double r661289 = r661279 / r661288;
double r661290 = r661280 + r661287;
double r661291 = r661277 * r661283;
double r661292 = r661290 / r661291;
double r661293 = r661276 ? r661289 : r661292;
return r661293;
}
double f(double a, double b, double c) {
double r661294 = b;
double r661295 = -1.6955952414049898e+140;
bool r661296 = r661294 <= r661295;
double r661297 = 0.0;
bool r661298 = r661294 >= r661297;
double r661299 = 2.0;
double r661300 = c;
double r661301 = r661299 * r661300;
double r661302 = -r661294;
double r661303 = r661294 * r661294;
double r661304 = 4.0;
double r661305 = a;
double r661306 = r661304 * r661305;
double r661307 = r661306 * r661300;
double r661308 = r661303 - r661307;
double r661309 = sqrt(r661308);
double r661310 = r661302 - r661309;
double r661311 = r661301 / r661310;
double r661312 = r661294 / r661305;
double r661313 = r661300 / r661312;
double r661314 = r661313 - r661294;
double r661315 = r661299 * r661314;
double r661316 = r661299 * r661305;
double r661317 = r661315 / r661316;
double r661318 = r661298 ? r661311 : r661317;
double r661319 = 1.0278279293485846e+87;
bool r661320 = r661294 <= r661319;
double r661321 = sqrt(r661309);
double r661322 = r661321 * r661321;
double r661323 = r661302 + r661322;
double r661324 = r661323 / r661316;
double r661325 = r661298 ? r661311 : r661324;
double r661326 = -2.0;
double r661327 = r661294 / r661300;
double r661328 = r661305 / r661327;
double r661329 = fma(r661326, r661328, r661294);
double r661330 = r661302 - r661329;
double r661331 = r661301 / r661330;
double r661332 = r661309 + r661302;
double r661333 = r661332 / r661316;
double r661334 = r661298 ? r661331 : r661333;
double r661335 = r661320 ? r661325 : r661334;
double r661336 = r661296 ? r661318 : r661335;
return r661336;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.6955952414049898e+140Initial program 55.7
rmApplied add-sqr-sqrt55.8
Taylor expanded around -inf 11.1
Simplified2.4
if -1.6955952414049898e+140 < b < 1.0278279293485846e+87Initial program 8.2
rmApplied add-sqr-sqrt8.3
if 1.0278279293485846e+87 < b Initial program 26.9
rmApplied prod-diff27.0
Taylor expanded around inf 6.1
Simplified2.3
Final simplification6.1
herbie shell --seed 2019132 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))