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



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)))