\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.3393873985403924 \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{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.0479007947857462 \cdot 10^{99}:\\
\;\;\;\;\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{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}double f(double a, double b, double c) {
double r42536 = b;
double r42537 = 0.0;
bool r42538 = r42536 >= r42537;
double r42539 = -r42536;
double r42540 = r42536 * r42536;
double r42541 = 4.0;
double r42542 = a;
double r42543 = r42541 * r42542;
double r42544 = c;
double r42545 = r42543 * r42544;
double r42546 = r42540 - r42545;
double r42547 = sqrt(r42546);
double r42548 = r42539 - r42547;
double r42549 = 2.0;
double r42550 = r42549 * r42542;
double r42551 = r42548 / r42550;
double r42552 = r42549 * r42544;
double r42553 = r42539 + r42547;
double r42554 = r42552 / r42553;
double r42555 = r42538 ? r42551 : r42554;
return r42555;
}
double f(double a, double b, double c) {
double r42556 = b;
double r42557 = -1.3393873985403924e+154;
bool r42558 = r42556 <= r42557;
double r42559 = 0.0;
bool r42560 = r42556 >= r42559;
double r42561 = -r42556;
double r42562 = r42556 * r42556;
double r42563 = 4.0;
double r42564 = a;
double r42565 = r42563 * r42564;
double r42566 = c;
double r42567 = r42565 * r42566;
double r42568 = r42562 - r42567;
double r42569 = sqrt(r42568);
double r42570 = r42561 - r42569;
double r42571 = 2.0;
double r42572 = r42571 * r42564;
double r42573 = r42570 / r42572;
double r42574 = r42571 * r42566;
double r42575 = r42564 * r42566;
double r42576 = r42575 / r42556;
double r42577 = r42571 * r42576;
double r42578 = r42577 - r42556;
double r42579 = r42561 + r42578;
double r42580 = r42574 / r42579;
double r42581 = r42560 ? r42573 : r42580;
double r42582 = 1.0479007947857462e+99;
bool r42583 = r42556 <= r42582;
double r42584 = sqrt(r42569);
double r42585 = r42584 * r42584;
double r42586 = r42561 - r42585;
double r42587 = r42586 / r42572;
double r42588 = r42561 + r42569;
double r42589 = r42574 / r42588;
double r42590 = r42560 ? r42587 : r42589;
double r42591 = 2.0;
double r42592 = r42591 * r42556;
double r42593 = r42577 - r42592;
double r42594 = r42593 / r42572;
double r42595 = r42560 ? r42594 : r42589;
double r42596 = r42583 ? r42590 : r42595;
double r42597 = r42558 ? r42581 : r42596;
return r42597;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3393873985403924e+154Initial program 38.5
Taylor expanded around -inf 7.4
if -1.3393873985403924e+154 < b < 1.0479007947857462e+99Initial program 8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.8
if 1.0479007947857462e+99 < b Initial program 47.7
Taylor expanded around inf 11.2
Final simplification8.9
herbie shell --seed 2020065 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))