\begin{array}{l}
\mathbf{if}\;b \ge 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.723731815549707 \cdot 10^{+89}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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}{2 \cdot \left(c \cdot \frac{a}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.559678284282607 \cdot 10^{+69}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left|\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right|} \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:\\
\;\;\;\;\frac{2 \cdot \left(c \cdot \frac{a}{b} - b\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 r712634 = b;
double r712635 = 0.0;
bool r712636 = r712634 >= r712635;
double r712637 = -r712634;
double r712638 = r712634 * r712634;
double r712639 = 4.0;
double r712640 = a;
double r712641 = r712639 * r712640;
double r712642 = c;
double r712643 = r712641 * r712642;
double r712644 = r712638 - r712643;
double r712645 = sqrt(r712644);
double r712646 = r712637 - r712645;
double r712647 = 2.0;
double r712648 = r712647 * r712640;
double r712649 = r712646 / r712648;
double r712650 = r712647 * r712642;
double r712651 = r712637 + r712645;
double r712652 = r712650 / r712651;
double r712653 = r712636 ? r712649 : r712652;
return r712653;
}
double f(double a, double b, double c) {
double r712654 = b;
double r712655 = -2.723731815549707e+89;
bool r712656 = r712654 <= r712655;
double r712657 = 0.0;
bool r712658 = r712654 >= r712657;
double r712659 = -r712654;
double r712660 = r712654 * r712654;
double r712661 = 4.0;
double r712662 = a;
double r712663 = r712661 * r712662;
double r712664 = c;
double r712665 = r712663 * r712664;
double r712666 = r712660 - r712665;
double r712667 = sqrt(r712666);
double r712668 = r712659 - r712667;
double r712669 = 2.0;
double r712670 = r712669 * r712662;
double r712671 = r712668 / r712670;
double r712672 = r712664 * r712669;
double r712673 = r712662 / r712654;
double r712674 = r712664 * r712673;
double r712675 = r712674 - r712654;
double r712676 = r712669 * r712675;
double r712677 = r712672 / r712676;
double r712678 = r712658 ? r712671 : r712677;
double r712679 = 2.559678284282607e+69;
bool r712680 = r712654 <= r712679;
double r712681 = cbrt(r712666);
double r712682 = sqrt(r712681);
double r712683 = r712682 * r712682;
double r712684 = fabs(r712683);
double r712685 = r712682 * r712684;
double r712686 = sqrt(r712685);
double r712687 = sqrt(r712667);
double r712688 = r712686 * r712687;
double r712689 = r712659 - r712688;
double r712690 = r712689 / r712670;
double r712691 = r712667 + r712659;
double r712692 = r712672 / r712691;
double r712693 = r712658 ? r712690 : r712692;
double r712694 = r712676 / r712670;
double r712695 = r712658 ? r712694 : r712692;
double r712696 = r712680 ? r712693 : r712695;
double r712697 = r712656 ? r712678 : r712696;
return r712697;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.723731815549707e+89Initial program 27.1
Taylor expanded around -inf 6.1
Simplified2.6
if -2.723731815549707e+89 < b < 2.559678284282607e+69Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
rmApplied add-cube-cbrt9.0
Applied sqrt-prod9.0
Simplified9.0
rmApplied add-sqr-sqrt9.1
if 2.559678284282607e+69 < b Initial program 39.0
Taylor expanded around inf 9.3
Simplified4.9
Final simplification6.7
herbie shell --seed 2019152
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))