\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 -3.353411485092052314829631610929360473517 \cdot 10^{-283}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.608284405260305560018146283533738265178 \cdot 10^{78}:\\
\;\;\;\;\frac{2 \cdot c}{\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 r35566 = b;
double r35567 = -r35566;
double r35568 = r35566 * r35566;
double r35569 = 4.0;
double r35570 = a;
double r35571 = r35569 * r35570;
double r35572 = c;
double r35573 = r35571 * r35572;
double r35574 = r35568 - r35573;
double r35575 = sqrt(r35574);
double r35576 = r35567 + r35575;
double r35577 = 2.0;
double r35578 = r35577 * r35570;
double r35579 = r35576 / r35578;
return r35579;
}
double f(double a, double b, double c) {
double r35580 = b;
double r35581 = -1.569310777886352e+111;
bool r35582 = r35580 <= r35581;
double r35583 = 1.0;
double r35584 = c;
double r35585 = r35584 / r35580;
double r35586 = a;
double r35587 = r35580 / r35586;
double r35588 = r35585 - r35587;
double r35589 = r35583 * r35588;
double r35590 = -3.3534114850920523e-283;
bool r35591 = r35580 <= r35590;
double r35592 = -r35580;
double r35593 = r35580 * r35580;
double r35594 = 4.0;
double r35595 = r35594 * r35586;
double r35596 = r35595 * r35584;
double r35597 = r35593 - r35596;
double r35598 = sqrt(r35597);
double r35599 = r35592 + r35598;
double r35600 = 1.0;
double r35601 = 2.0;
double r35602 = r35601 * r35586;
double r35603 = r35600 / r35602;
double r35604 = r35599 * r35603;
double r35605 = 1.6082844052603056e+78;
bool r35606 = r35580 <= r35605;
double r35607 = r35601 * r35584;
double r35608 = r35592 - r35598;
double r35609 = r35607 / r35608;
double r35610 = -1.0;
double r35611 = r35610 * r35585;
double r35612 = r35606 ? r35609 : r35611;
double r35613 = r35591 ? r35604 : r35612;
double r35614 = r35582 ? r35589 : r35613;
return r35614;
}



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.3534114850920523e-283Initial program 8.4
rmApplied div-inv8.6
if -3.3534114850920523e-283 < b < 1.6082844052603056e+78Initial program 30.3
rmApplied div-inv30.3
rmApplied flip-+30.4
Applied associate-*l/30.5
Simplified15.7
Taylor expanded around 0 9.1
if 1.6082844052603056e+78 < b Initial program 58.7
Taylor expanded around inf 3.2
Final simplification6.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)))