\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 -9.139254247068609 \cdot 10^{+140}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 9.632148973470483 \cdot 10^{-296}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\sqrt{(-4 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - b}{a}\\
\mathbf{elif}\;b \le 6.523631550102089 \cdot 10^{+89}:\\
\;\;\;\;\frac{\frac{-c}{\left(-b\right) - \sqrt{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}}}{\frac{-1}{2}}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r6061538 = b;
double r6061539 = -r6061538;
double r6061540 = r6061538 * r6061538;
double r6061541 = 4.0;
double r6061542 = a;
double r6061543 = r6061541 * r6061542;
double r6061544 = c;
double r6061545 = r6061543 * r6061544;
double r6061546 = r6061540 - r6061545;
double r6061547 = sqrt(r6061546);
double r6061548 = r6061539 + r6061547;
double r6061549 = 2.0;
double r6061550 = r6061549 * r6061542;
double r6061551 = r6061548 / r6061550;
return r6061551;
}
double f(double a, double b, double c) {
double r6061552 = b;
double r6061553 = -9.139254247068609e+140;
bool r6061554 = r6061552 <= r6061553;
double r6061555 = c;
double r6061556 = r6061555 / r6061552;
double r6061557 = a;
double r6061558 = r6061552 / r6061557;
double r6061559 = r6061556 - r6061558;
double r6061560 = 9.632148973470483e-296;
bool r6061561 = r6061552 <= r6061560;
double r6061562 = 0.5;
double r6061563 = -4.0;
double r6061564 = r6061555 * r6061557;
double r6061565 = r6061552 * r6061552;
double r6061566 = fma(r6061563, r6061564, r6061565);
double r6061567 = sqrt(r6061566);
double r6061568 = r6061567 - r6061552;
double r6061569 = r6061568 / r6061557;
double r6061570 = r6061562 * r6061569;
double r6061571 = 6.523631550102089e+89;
bool r6061572 = r6061552 <= r6061571;
double r6061573 = -r6061555;
double r6061574 = -r6061552;
double r6061575 = r6061557 * r6061563;
double r6061576 = fma(r6061575, r6061555, r6061565);
double r6061577 = sqrt(r6061576);
double r6061578 = r6061574 - r6061577;
double r6061579 = r6061573 / r6061578;
double r6061580 = -0.5;
double r6061581 = r6061579 / r6061580;
double r6061582 = -r6061556;
double r6061583 = r6061572 ? r6061581 : r6061582;
double r6061584 = r6061561 ? r6061570 : r6061583;
double r6061585 = r6061554 ? r6061559 : r6061584;
return r6061585;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -9.139254247068609e+140Initial program 55.8
Taylor expanded around -inf 1.6
if -9.139254247068609e+140 < b < 9.632148973470483e-296Initial program 8.7
rmApplied clear-num8.9
rmApplied *-un-lft-identity8.9
Applied *-un-lft-identity8.9
Applied distribute-rgt-neg-in8.9
Applied distribute-lft-out8.9
Applied times-frac8.9
Applied add-sqr-sqrt8.9
Applied times-frac8.9
Simplified8.9
Simplified8.7
if 9.632148973470483e-296 < b < 6.523631550102089e+89Initial program 32.6
rmApplied clear-num32.7
rmApplied flip-+32.7
Applied associate-/r/32.8
Applied *-un-lft-identity32.8
Applied times-frac32.8
Simplified16.4
Simplified16.4
rmApplied distribute-frac-neg16.4
Applied distribute-lft-neg-out16.4
Simplified9.3
if 6.523631550102089e+89 < b Initial program 58.7
Taylor expanded around inf 2.6
Simplified2.6
Final simplification6.6
herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))