\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.3902005753272015 \cdot 10^{+143}:\\
\;\;\;\;\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}{\frac{b}{c}} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.2635309152827781 \cdot 10^{+88}:\\
\;\;\;\;\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}{\frac{b}{c}} - 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 r957555 = b;
double r957556 = 0.0;
bool r957557 = r957555 >= r957556;
double r957558 = 2.0;
double r957559 = c;
double r957560 = r957558 * r957559;
double r957561 = -r957555;
double r957562 = r957555 * r957555;
double r957563 = 4.0;
double r957564 = a;
double r957565 = r957563 * r957564;
double r957566 = r957565 * r957559;
double r957567 = r957562 - r957566;
double r957568 = sqrt(r957567);
double r957569 = r957561 - r957568;
double r957570 = r957560 / r957569;
double r957571 = r957561 + r957568;
double r957572 = r957558 * r957564;
double r957573 = r957571 / r957572;
double r957574 = r957557 ? r957570 : r957573;
return r957574;
}
double f(double a, double b, double c) {
double r957575 = b;
double r957576 = -1.3902005753272015e+143;
bool r957577 = r957575 <= r957576;
double r957578 = 0.0;
bool r957579 = r957575 >= r957578;
double r957580 = 2.0;
double r957581 = c;
double r957582 = r957580 * r957581;
double r957583 = -r957575;
double r957584 = r957575 * r957575;
double r957585 = 4.0;
double r957586 = a;
double r957587 = r957585 * r957586;
double r957588 = r957587 * r957581;
double r957589 = r957584 - r957588;
double r957590 = sqrt(r957589);
double r957591 = r957583 - r957590;
double r957592 = r957582 / r957591;
double r957593 = r957575 / r957581;
double r957594 = r957586 / r957593;
double r957595 = r957594 - r957575;
double r957596 = r957580 * r957595;
double r957597 = r957580 * r957586;
double r957598 = r957596 / r957597;
double r957599 = r957579 ? r957592 : r957598;
double r957600 = 1.2635309152827781e+88;
bool r957601 = r957575 <= r957600;
double r957602 = sqrt(r957590);
double r957603 = r957602 * r957602;
double r957604 = r957583 + r957603;
double r957605 = r957604 / r957597;
double r957606 = r957579 ? r957592 : r957605;
double r957607 = r957582 / r957596;
double r957608 = r957590 + r957583;
double r957609 = r957608 / r957597;
double r957610 = r957579 ? r957607 : r957609;
double r957611 = r957601 ? r957606 : r957610;
double r957612 = r957577 ? r957599 : r957611;
return r957612;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3902005753272015e+143Initial program 57.4
Taylor expanded around -inf 9.3
Simplified2.3
if -1.3902005753272015e+143 < b < 1.2635309152827781e+88Initial program 9.3
rmApplied add-sqr-sqrt9.3
Applied sqrt-prod9.4
if 1.2635309152827781e+88 < b Initial program 29.4
Taylor expanded around inf 6.4
Simplified2.6
Final simplification6.9
herbie shell --seed 2019163
(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))))