\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 -3.098467977454582102316048322967968795279 \cdot 10^{76}:\\
\;\;\;\;\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}{b \cdot -2 + \frac{2 \cdot a}{\frac{b}{c}}}\\
\end{array}\\
\mathbf{elif}\;b \le 2.477477027570354726331144001887489320672 \cdot 10^{83}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{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.0:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\
\mathbf{else}:\\
\;\;\;\;\frac{-2}{\frac{b}{c}}\\
\end{array}double f(double a, double b, double c) {
double r32631 = b;
double r32632 = 0.0;
bool r32633 = r32631 >= r32632;
double r32634 = -r32631;
double r32635 = r32631 * r32631;
double r32636 = 4.0;
double r32637 = a;
double r32638 = r32636 * r32637;
double r32639 = c;
double r32640 = r32638 * r32639;
double r32641 = r32635 - r32640;
double r32642 = sqrt(r32641);
double r32643 = r32634 - r32642;
double r32644 = 2.0;
double r32645 = r32644 * r32637;
double r32646 = r32643 / r32645;
double r32647 = r32644 * r32639;
double r32648 = r32634 + r32642;
double r32649 = r32647 / r32648;
double r32650 = r32633 ? r32646 : r32649;
return r32650;
}
double f(double a, double b, double c) {
double r32651 = b;
double r32652 = -3.098467977454582e+76;
bool r32653 = r32651 <= r32652;
double r32654 = 0.0;
bool r32655 = r32651 >= r32654;
double r32656 = -r32651;
double r32657 = r32651 * r32651;
double r32658 = 4.0;
double r32659 = a;
double r32660 = r32658 * r32659;
double r32661 = c;
double r32662 = r32660 * r32661;
double r32663 = r32657 - r32662;
double r32664 = sqrt(r32663);
double r32665 = r32656 - r32664;
double r32666 = 2.0;
double r32667 = r32666 * r32659;
double r32668 = r32665 / r32667;
double r32669 = r32661 * r32666;
double r32670 = -2.0;
double r32671 = r32651 * r32670;
double r32672 = r32651 / r32661;
double r32673 = r32667 / r32672;
double r32674 = r32671 + r32673;
double r32675 = r32669 / r32674;
double r32676 = r32655 ? r32668 : r32675;
double r32677 = 2.4774770275703547e+83;
bool r32678 = r32651 <= r32677;
double r32679 = cbrt(r32663);
double r32680 = fabs(r32679);
double r32681 = sqrt(r32679);
double r32682 = r32680 * r32681;
double r32683 = r32656 - r32682;
double r32684 = r32683 / r32667;
double r32685 = r32664 + r32656;
double r32686 = r32669 / r32685;
double r32687 = r32655 ? r32684 : r32686;
double r32688 = r32661 / r32651;
double r32689 = r32651 / r32659;
double r32690 = r32688 - r32689;
double r32691 = 1.0;
double r32692 = r32690 * r32691;
double r32693 = -2.0;
double r32694 = r32693 / r32672;
double r32695 = r32655 ? r32692 : r32694;
double r32696 = r32678 ? r32687 : r32695;
double r32697 = r32653 ? r32676 : r32696;
return r32697;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.098467977454582e+76Initial program 27.3
Taylor expanded around -inf 6.3
Simplified2.9
if -3.098467977454582e+76 < b < 2.4774770275703547e+83Initial program 9.1
rmApplied add-cube-cbrt9.3
Applied sqrt-prod9.3
Simplified9.3
if 2.4774770275703547e+83 < b Initial program 43.8
Taylor expanded around inf 8.8
Simplified3.7
Taylor expanded around 0 3.5
Simplified3.5
Taylor expanded around -inf 3.5
Simplified3.5
Final simplification6.6
herbie shell --seed 2019194
(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)))))))