\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 -4.10633431994984372626074029846981068126 \cdot 10^{145}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.554764365478848224954311003198004797443 \cdot 10^{126}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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}}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}double f(double a, double b, double c) {
double r50631 = b;
double r50632 = 0.0;
bool r50633 = r50631 >= r50632;
double r50634 = -r50631;
double r50635 = r50631 * r50631;
double r50636 = 4.0;
double r50637 = a;
double r50638 = r50636 * r50637;
double r50639 = c;
double r50640 = r50638 * r50639;
double r50641 = r50635 - r50640;
double r50642 = sqrt(r50641);
double r50643 = r50634 - r50642;
double r50644 = 2.0;
double r50645 = r50644 * r50637;
double r50646 = r50643 / r50645;
double r50647 = r50644 * r50639;
double r50648 = r50634 + r50642;
double r50649 = r50647 / r50648;
double r50650 = r50633 ? r50646 : r50649;
return r50650;
}
double f(double a, double b, double c) {
double r50651 = b;
double r50652 = -4.106334319949844e+145;
bool r50653 = r50651 <= r50652;
double r50654 = 0.0;
bool r50655 = r50651 >= r50654;
double r50656 = -r50651;
double r50657 = r50651 * r50651;
double r50658 = 4.0;
double r50659 = a;
double r50660 = r50658 * r50659;
double r50661 = c;
double r50662 = r50660 * r50661;
double r50663 = r50657 - r50662;
double r50664 = sqrt(r50663);
double r50665 = r50656 - r50664;
double r50666 = 2.0;
double r50667 = r50666 * r50659;
double r50668 = r50665 / r50667;
double r50669 = r50666 * r50661;
double r50670 = r50659 * r50661;
double r50671 = r50670 / r50651;
double r50672 = r50666 * r50671;
double r50673 = r50672 - r50651;
double r50674 = r50656 + r50673;
double r50675 = r50669 / r50674;
double r50676 = r50655 ? r50668 : r50675;
double r50677 = 3.554764365478848e+126;
bool r50678 = r50651 <= r50677;
double r50679 = sqrt(r50664);
double r50680 = cbrt(r50663);
double r50681 = fabs(r50680);
double r50682 = sqrt(r50680);
double r50683 = r50681 * r50682;
double r50684 = sqrt(r50683);
double r50685 = r50679 * r50684;
double r50686 = r50656 + r50685;
double r50687 = r50669 / r50686;
double r50688 = r50655 ? r50668 : r50687;
double r50689 = 2.0;
double r50690 = r50689 * r50651;
double r50691 = r50672 - r50690;
double r50692 = r50691 / r50667;
double r50693 = r50656 + r50664;
double r50694 = r50669 / r50693;
double r50695 = r50655 ? r50692 : r50694;
double r50696 = r50678 ? r50688 : r50695;
double r50697 = r50653 ? r50676 : r50696;
return r50697;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.106334319949844e+145Initial program 37.2
Taylor expanded around -inf 7.1
if -4.106334319949844e+145 < b < 3.554764365478848e+126Initial program 8.3
rmApplied add-sqr-sqrt8.3
Applied sqrt-prod8.4
rmApplied add-cube-cbrt8.4
Applied sqrt-prod8.4
Simplified8.4
if 3.554764365478848e+126 < b Initial program 53.9
Taylor expanded around inf 11.4
Final simplification8.6
herbie shell --seed 2019318
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))