\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.763315479739403460017265344144602342789 \cdot 10^{89}:\\
\;\;\;\;\frac{2 \cdot \frac{c}{b} - \frac{b}{a} \cdot 2}{2}\\
\mathbf{elif}\;b \le 9.136492990928292133394320076175633285536 \cdot 10^{-23}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1965525 = b;
double r1965526 = -r1965525;
double r1965527 = r1965525 * r1965525;
double r1965528 = 4.0;
double r1965529 = a;
double r1965530 = r1965528 * r1965529;
double r1965531 = c;
double r1965532 = r1965530 * r1965531;
double r1965533 = r1965527 - r1965532;
double r1965534 = sqrt(r1965533);
double r1965535 = r1965526 + r1965534;
double r1965536 = 2.0;
double r1965537 = r1965536 * r1965529;
double r1965538 = r1965535 / r1965537;
return r1965538;
}
double f(double a, double b, double c) {
double r1965539 = b;
double r1965540 = -1.7633154797394035e+89;
bool r1965541 = r1965539 <= r1965540;
double r1965542 = 2.0;
double r1965543 = c;
double r1965544 = r1965543 / r1965539;
double r1965545 = r1965542 * r1965544;
double r1965546 = a;
double r1965547 = r1965539 / r1965546;
double r1965548 = 2.0;
double r1965549 = r1965547 * r1965548;
double r1965550 = r1965545 - r1965549;
double r1965551 = r1965550 / r1965542;
double r1965552 = 9.136492990928292e-23;
bool r1965553 = r1965539 <= r1965552;
double r1965554 = r1965539 * r1965539;
double r1965555 = r1965543 * r1965546;
double r1965556 = 4.0;
double r1965557 = r1965555 * r1965556;
double r1965558 = r1965554 - r1965557;
double r1965559 = sqrt(r1965558);
double r1965560 = r1965559 - r1965539;
double r1965561 = r1965560 / r1965546;
double r1965562 = r1965561 / r1965542;
double r1965563 = -2.0;
double r1965564 = r1965563 * r1965544;
double r1965565 = r1965564 / r1965542;
double r1965566 = r1965553 ? r1965562 : r1965565;
double r1965567 = r1965541 ? r1965551 : r1965566;
return r1965567;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.7633154797394035e+89Initial program 45.7
Simplified45.7
Taylor expanded around -inf 3.9
if -1.7633154797394035e+89 < b < 9.136492990928292e-23Initial program 15.0
Simplified15.0
rmApplied div-inv15.1
rmApplied un-div-inv15.0
if 9.136492990928292e-23 < b Initial program 55.5
Simplified55.4
Taylor expanded around inf 6.7
Final simplification10.2
herbie shell --seed 2019172
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))