\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 -3.037202934115589 \cdot 10^{+61}:\\
\;\;\;\;\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{c}{b} - \frac{b}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 3.1115579814291686 \cdot 10^{+29}:\\
\;\;\;\;\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) + \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}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(\frac{a}{b} \cdot c - b\right) \cdot 2}\\
\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 r809636 = b;
double r809637 = 0.0;
bool r809638 = r809636 >= r809637;
double r809639 = 2.0;
double r809640 = c;
double r809641 = r809639 * r809640;
double r809642 = -r809636;
double r809643 = r809636 * r809636;
double r809644 = 4.0;
double r809645 = a;
double r809646 = r809644 * r809645;
double r809647 = r809646 * r809640;
double r809648 = r809643 - r809647;
double r809649 = sqrt(r809648);
double r809650 = r809642 - r809649;
double r809651 = r809641 / r809650;
double r809652 = r809642 + r809649;
double r809653 = r809639 * r809645;
double r809654 = r809652 / r809653;
double r809655 = r809638 ? r809651 : r809654;
return r809655;
}
double f(double a, double b, double c) {
double r809656 = b;
double r809657 = -3.037202934115589e+61;
bool r809658 = r809656 <= r809657;
double r809659 = 0.0;
bool r809660 = r809656 >= r809659;
double r809661 = 2.0;
double r809662 = c;
double r809663 = r809661 * r809662;
double r809664 = -r809656;
double r809665 = r809656 * r809656;
double r809666 = 4.0;
double r809667 = a;
double r809668 = r809666 * r809667;
double r809669 = r809668 * r809662;
double r809670 = r809665 - r809669;
double r809671 = sqrt(r809670);
double r809672 = r809664 - r809671;
double r809673 = r809663 / r809672;
double r809674 = r809662 / r809656;
double r809675 = r809656 / r809667;
double r809676 = r809674 - r809675;
double r809677 = r809660 ? r809673 : r809676;
double r809678 = 3.1115579814291686e+29;
bool r809679 = r809656 <= r809678;
double r809680 = cbrt(r809670);
double r809681 = fabs(r809680);
double r809682 = sqrt(r809680);
double r809683 = r809681 * r809682;
double r809684 = r809664 + r809683;
double r809685 = r809661 * r809667;
double r809686 = r809684 / r809685;
double r809687 = r809660 ? r809673 : r809686;
double r809688 = r809667 / r809656;
double r809689 = r809688 * r809662;
double r809690 = r809689 - r809656;
double r809691 = r809690 * r809661;
double r809692 = r809663 / r809691;
double r809693 = r809671 + r809664;
double r809694 = r809693 / r809685;
double r809695 = r809660 ? r809692 : r809694;
double r809696 = r809679 ? r809687 : r809695;
double r809697 = r809658 ? r809677 : r809696;
return r809697;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.037202934115589e+61Initial program 37.4
rmApplied add-sqr-sqrt37.4
Applied sqrt-prod37.5
Taylor expanded around -inf 10.5
Simplified10.5
Taylor expanded around -inf 5.4
if -3.037202934115589e+61 < b < 3.1115579814291686e+29Initial program 9.3
rmApplied add-cube-cbrt9.6
Applied sqrt-prod9.6
Simplified9.6
if 3.1115579814291686e+29 < b Initial program 24.0
Taylor expanded around inf 8.0
Simplified4.5
Final simplification7.3
herbie shell --seed 2019134
(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))))