\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 -2.630943794196583010277874044376620682517 \cdot 10^{112}:\\
\;\;\;\;\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, b, \frac{2}{\frac{b}{a \cdot c}}\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.932191065039699403664081156929555460562 \cdot 10^{107}:\\
\;\;\;\;\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}{\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}}}\\
\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 r960555 = b;
double r960556 = 0.0;
bool r960557 = r960555 >= r960556;
double r960558 = -r960555;
double r960559 = r960555 * r960555;
double r960560 = 4.0;
double r960561 = a;
double r960562 = r960560 * r960561;
double r960563 = c;
double r960564 = r960562 * r960563;
double r960565 = r960559 - r960564;
double r960566 = sqrt(r960565);
double r960567 = r960558 - r960566;
double r960568 = 2.0;
double r960569 = r960568 * r960561;
double r960570 = r960567 / r960569;
double r960571 = r960568 * r960563;
double r960572 = r960558 + r960566;
double r960573 = r960571 / r960572;
double r960574 = r960557 ? r960570 : r960573;
return r960574;
}
double f(double a, double b, double c) {
double r960575 = b;
double r960576 = -2.630943794196583e+112;
bool r960577 = r960575 <= r960576;
double r960578 = 0.0;
bool r960579 = r960575 >= r960578;
double r960580 = -r960575;
double r960581 = r960575 * r960575;
double r960582 = 4.0;
double r960583 = a;
double r960584 = r960582 * r960583;
double r960585 = c;
double r960586 = r960584 * r960585;
double r960587 = r960581 - r960586;
double r960588 = sqrt(r960587);
double r960589 = r960580 - r960588;
double r960590 = 2.0;
double r960591 = r960590 * r960583;
double r960592 = r960589 / r960591;
double r960593 = r960585 * r960590;
double r960594 = -2.0;
double r960595 = r960583 * r960585;
double r960596 = r960575 / r960595;
double r960597 = r960590 / r960596;
double r960598 = fma(r960594, r960575, r960597);
double r960599 = r960593 / r960598;
double r960600 = r960579 ? r960592 : r960599;
double r960601 = 3.9321910650396994e+107;
bool r960602 = r960575 <= r960601;
double r960603 = sqrt(r960588);
double r960604 = r960603 * r960603;
double r960605 = r960580 + r960604;
double r960606 = r960593 / r960605;
double r960607 = r960579 ? r960592 : r960606;
double r960608 = r960575 / r960585;
double r960609 = r960591 / r960608;
double r960610 = fma(r960594, r960575, r960609);
double r960611 = r960610 / r960591;
double r960612 = r960588 + r960580;
double r960613 = r960593 / r960612;
double r960614 = r960579 ? r960611 : r960613;
double r960615 = r960602 ? r960607 : r960614;
double r960616 = r960577 ? r960600 : r960615;
return r960616;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -2.630943794196583e+112Initial program 31.8
rmApplied add-sqr-sqrt31.8
Applied sqrt-prod31.8
Taylor expanded around -inf 6.9
Simplified6.9
if -2.630943794196583e+112 < b < 3.9321910650396994e+107Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
if 3.9321910650396994e+107 < b Initial program 49.2
rmApplied add-sqr-sqrt49.2
Applied sqrt-prod49.2
Taylor expanded around inf 10.0
Simplified3.6
Final simplification8.1
herbie shell --seed 2019171 +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)))))))