\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.7246734819168266 \cdot 10^{+119}:\\
\;\;\;\;\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{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 3.5713846885333815 \cdot 10^{+62}:\\
\;\;\;\;\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}{2 \cdot \left(\frac{a \cdot c}{b} - 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 r951541 = b;
double r951542 = 0.0;
bool r951543 = r951541 >= r951542;
double r951544 = 2.0;
double r951545 = c;
double r951546 = r951544 * r951545;
double r951547 = -r951541;
double r951548 = r951541 * r951541;
double r951549 = 4.0;
double r951550 = a;
double r951551 = r951549 * r951550;
double r951552 = r951551 * r951545;
double r951553 = r951548 - r951552;
double r951554 = sqrt(r951553);
double r951555 = r951547 - r951554;
double r951556 = r951546 / r951555;
double r951557 = r951547 + r951554;
double r951558 = r951544 * r951550;
double r951559 = r951557 / r951558;
double r951560 = r951543 ? r951556 : r951559;
return r951560;
}
double f(double a, double b, double c) {
double r951561 = b;
double r951562 = -1.7246734819168266e+119;
bool r951563 = r951561 <= r951562;
double r951564 = 0.0;
bool r951565 = r951561 >= r951564;
double r951566 = 2.0;
double r951567 = c;
double r951568 = r951566 * r951567;
double r951569 = -r951561;
double r951570 = r951561 * r951561;
double r951571 = 4.0;
double r951572 = a;
double r951573 = r951571 * r951572;
double r951574 = r951573 * r951567;
double r951575 = r951570 - r951574;
double r951576 = sqrt(r951575);
double r951577 = r951569 - r951576;
double r951578 = r951568 / r951577;
double r951579 = r951572 * r951567;
double r951580 = r951579 / r951561;
double r951581 = r951580 - r951561;
double r951582 = r951566 * r951581;
double r951583 = r951566 * r951572;
double r951584 = r951582 / r951583;
double r951585 = r951565 ? r951578 : r951584;
double r951586 = 3.5713846885333815e+62;
bool r951587 = r951561 <= r951586;
double r951588 = sqrt(r951576);
double r951589 = r951588 * r951588;
double r951590 = r951569 + r951589;
double r951591 = r951590 / r951583;
double r951592 = r951565 ? r951578 : r951591;
double r951593 = r951568 / r951582;
double r951594 = r951576 + r951569;
double r951595 = r951594 / r951583;
double r951596 = r951565 ? r951593 : r951595;
double r951597 = r951587 ? r951592 : r951596;
double r951598 = r951563 ? r951585 : r951597;
return r951598;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.7246734819168266e+119Initial program 49.8
rmApplied add-sqr-sqrt49.8
Applied sqrt-prod49.9
Taylor expanded around -inf 10.2
Simplified10.2
if -1.7246734819168266e+119 < b < 3.5713846885333815e+62Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.1
if 3.5713846885333815e+62 < b Initial program 25.7
Taylor expanded around inf 6.5
Simplified6.5
Final simplification8.5
herbie shell --seed 2019158
(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))))