\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 176.1804748497357593350898241624236106873:\\
\;\;\;\;\frac{\frac{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right) - b \cdot b}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \left(a \cdot c\right)}{2 \cdot \left(a \cdot b\right)}\\
\end{array}double f(double a, double b, double c) {
double r31692 = b;
double r31693 = -r31692;
double r31694 = r31692 * r31692;
double r31695 = 4.0;
double r31696 = a;
double r31697 = r31695 * r31696;
double r31698 = c;
double r31699 = r31697 * r31698;
double r31700 = r31694 - r31699;
double r31701 = sqrt(r31700);
double r31702 = r31693 + r31701;
double r31703 = 2.0;
double r31704 = r31703 * r31696;
double r31705 = r31702 / r31704;
return r31705;
}
double f(double a, double b, double c) {
double r31706 = b;
double r31707 = 176.18047484973576;
bool r31708 = r31706 <= r31707;
double r31709 = r31706 * r31706;
double r31710 = 4.0;
double r31711 = a;
double r31712 = r31710 * r31711;
double r31713 = c;
double r31714 = r31712 * r31713;
double r31715 = r31709 - r31714;
double r31716 = r31715 - r31709;
double r31717 = sqrt(r31715);
double r31718 = r31717 + r31706;
double r31719 = r31716 / r31718;
double r31720 = 2.0;
double r31721 = r31720 * r31711;
double r31722 = r31719 / r31721;
double r31723 = -2.0;
double r31724 = r31711 * r31713;
double r31725 = r31723 * r31724;
double r31726 = r31711 * r31706;
double r31727 = r31720 * r31726;
double r31728 = r31725 / r31727;
double r31729 = r31708 ? r31722 : r31728;
return r31729;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 176.18047484973576Initial program 15.5
Simplified15.5
rmApplied flip--15.6
Simplified14.6
if 176.18047484973576 < b Initial program 34.6
Simplified34.6
Taylor expanded around inf 17.6
rmApplied add-sqr-sqrt17.7
Applied times-frac17.7
rmApplied frac-times17.7
Applied associate-*r/17.7
Applied associate-/l/17.7
Simplified17.6
Final simplification16.6
herbie shell --seed 2019303
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))