\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.290694061730984065554897075384835267389 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\mathsf{fma}\left(2, \frac{c}{\frac{b}{a}}, -2 \cdot b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(-2, b, \frac{2 \cdot a}{\frac{b}{c}}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r897308 = b;
double r897309 = 0.0;
bool r897310 = r897308 >= r897309;
double r897311 = -r897308;
double r897312 = r897308 * r897308;
double r897313 = 4.0;
double r897314 = a;
double r897315 = r897313 * r897314;
double r897316 = c;
double r897317 = r897315 * r897316;
double r897318 = r897312 - r897317;
double r897319 = sqrt(r897318);
double r897320 = r897311 - r897319;
double r897321 = 2.0;
double r897322 = r897321 * r897314;
double r897323 = r897320 / r897322;
double r897324 = r897321 * r897316;
double r897325 = r897311 + r897319;
double r897326 = r897324 / r897325;
double r897327 = r897310 ? r897323 : r897326;
return r897327;
}
double f(double a, double b, double c) {
double r897328 = b;
double r897329 = -1.290694061730984e+154;
bool r897330 = r897328 <= r897329;
double r897331 = 0.0;
bool r897332 = r897328 >= r897331;
double r897333 = -r897328;
double r897334 = r897328 * r897328;
double r897335 = 4.0;
double r897336 = a;
double r897337 = r897335 * r897336;
double r897338 = c;
double r897339 = r897337 * r897338;
double r897340 = r897334 - r897339;
double r897341 = sqrt(r897340);
double r897342 = r897333 - r897341;
double r897343 = 2.0;
double r897344 = r897343 * r897336;
double r897345 = r897342 / r897344;
double r897346 = r897338 * r897343;
double r897347 = r897328 / r897336;
double r897348 = r897338 / r897347;
double r897349 = -2.0;
double r897350 = r897349 * r897328;
double r897351 = fma(r897343, r897348, r897350);
double r897352 = r897346 / r897351;
double r897353 = r897332 ? r897345 : r897352;
double r897354 = 3.628799960716312e+50;
bool r897355 = r897328 <= r897354;
double r897356 = sqrt(r897341);
double r897357 = r897356 * r897356;
double r897358 = r897333 - r897357;
double r897359 = r897358 / r897344;
double r897360 = r897341 + r897333;
double r897361 = r897346 / r897360;
double r897362 = r897332 ? r897359 : r897361;
double r897363 = r897328 / r897338;
double r897364 = r897344 / r897363;
double r897365 = fma(r897349, r897328, r897364);
double r897366 = r897365 / r897344;
double r897367 = r897332 ? r897366 : r897361;
double r897368 = r897355 ? r897362 : r897367;
double r897369 = r897330 ? r897353 : r897368;
return r897369;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.290694061730984e+154Initial program 37.9
Taylor expanded around -inf 6.0
Simplified1.2
if -1.290694061730984e+154 < b < 3.628799960716312e+50Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.5
if 3.628799960716312e+50 < b Initial program 38.2
rmApplied add-sqr-sqrt38.2
Applied sqrt-prod38.3
Taylor expanded around inf 11.3
Simplified6.2
Final simplification6.8
herbie shell --seed 2019179 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))