\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 -1.569310777886352095486911207889814773134 \cdot 10^{111}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le \frac{-8633006810733365}{2.808895523222368605827039360607851146278 \cdot 10^{306}}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{1 \cdot \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{a}\\
\mathbf{elif}\;b \le 1.447939350868406385811948663168665665979 \cdot 10^{78}:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r37213 = b;
double r37214 = -r37213;
double r37215 = r37213 * r37213;
double r37216 = 4.0;
double r37217 = a;
double r37218 = r37216 * r37217;
double r37219 = c;
double r37220 = r37218 * r37219;
double r37221 = r37215 - r37220;
double r37222 = sqrt(r37221);
double r37223 = r37214 + r37222;
double r37224 = 2.0;
double r37225 = r37224 * r37217;
double r37226 = r37223 / r37225;
return r37226;
}
double f(double a, double b, double c) {
double r37227 = b;
double r37228 = -1.569310777886352e+111;
bool r37229 = r37227 <= r37228;
double r37230 = 1.0;
double r37231 = c;
double r37232 = r37231 / r37227;
double r37233 = a;
double r37234 = r37227 / r37233;
double r37235 = r37232 - r37234;
double r37236 = r37230 * r37235;
double r37237 = -8633006810733365.0;
double r37238 = 2.8088955232223686e+306;
double r37239 = r37237 / r37238;
bool r37240 = r37227 <= r37239;
double r37241 = 1.0;
double r37242 = 2.0;
double r37243 = r37241 / r37242;
double r37244 = -r37227;
double r37245 = r37227 * r37227;
double r37246 = 4.0;
double r37247 = r37246 * r37233;
double r37248 = r37247 * r37231;
double r37249 = r37245 - r37248;
double r37250 = sqrt(r37249);
double r37251 = r37244 + r37250;
double r37252 = r37241 * r37251;
double r37253 = r37252 / r37233;
double r37254 = r37243 * r37253;
double r37255 = 1.4479393508684064e+78;
bool r37256 = r37227 <= r37255;
double r37257 = 2.0;
double r37258 = pow(r37227, r37257);
double r37259 = r37258 - r37258;
double r37260 = r37233 * r37231;
double r37261 = r37246 * r37260;
double r37262 = r37259 + r37261;
double r37263 = r37242 * r37233;
double r37264 = r37262 / r37263;
double r37265 = r37244 - r37250;
double r37266 = r37264 / r37265;
double r37267 = -1.0;
double r37268 = r37267 * r37232;
double r37269 = r37256 ? r37266 : r37268;
double r37270 = r37240 ? r37254 : r37269;
double r37271 = r37229 ? r37236 : r37270;
return r37271;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.569310777886352e+111Initial program 50.4
Taylor expanded around -inf 3.9
Simplified3.9
if -1.569310777886352e+111 < b < -3.07345244398039e-291Initial program 8.4
rmApplied clear-num8.6
rmApplied *-un-lft-identity8.6
Applied times-frac8.6
Applied add-sqr-sqrt8.6
Applied times-frac8.6
Simplified8.6
Simplified8.4
if -3.07345244398039e-291 < b < 1.4479393508684064e+78Initial program 30.7
rmApplied clear-num30.7
rmApplied flip-+30.8
Applied associate-/r/30.8
Applied associate-/r*30.9
Simplified15.9
if 1.4479393508684064e+78 < b Initial program 58.7
Taylor expanded around inf 3.2
Final simplification8.6
herbie shell --seed 2019303
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))