\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -128454993639955.03125:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 106106913250787377152:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\right) \cdot \sqrt[3]{\left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}} - b}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}double f(double a, double b, double c) {
double r27595 = b;
double r27596 = 0.0;
bool r27597 = r27595 >= r27596;
double r27598 = -r27595;
double r27599 = r27595 * r27595;
double r27600 = 4.0;
double r27601 = a;
double r27602 = r27600 * r27601;
double r27603 = c;
double r27604 = r27602 * r27603;
double r27605 = r27599 - r27604;
double r27606 = sqrt(r27605);
double r27607 = r27598 - r27606;
double r27608 = 2.0;
double r27609 = r27608 * r27601;
double r27610 = r27607 / r27609;
double r27611 = r27608 * r27603;
double r27612 = r27598 + r27606;
double r27613 = r27611 / r27612;
double r27614 = r27597 ? r27610 : r27613;
return r27614;
}
double f(double a, double b, double c) {
double r27615 = b;
double r27616 = -128454993639955.03;
bool r27617 = r27615 <= r27616;
double r27618 = 0.0;
bool r27619 = r27615 >= r27618;
double r27620 = -r27615;
double r27621 = r27615 * r27615;
double r27622 = 4.0;
double r27623 = a;
double r27624 = r27622 * r27623;
double r27625 = c;
double r27626 = r27624 * r27625;
double r27627 = r27621 - r27626;
double r27628 = sqrt(r27627);
double r27629 = r27620 - r27628;
double r27630 = 2.0;
double r27631 = r27630 * r27623;
double r27632 = r27629 / r27631;
double r27633 = r27630 * r27625;
double r27634 = r27623 * r27625;
double r27635 = r27634 / r27615;
double r27636 = r27630 * r27635;
double r27637 = 2.0;
double r27638 = r27637 * r27615;
double r27639 = r27636 - r27638;
double r27640 = r27633 / r27639;
double r27641 = r27619 ? r27632 : r27640;
double r27642 = 1.0610691325078738e+20;
bool r27643 = r27615 <= r27642;
double r27644 = cbrt(r27628);
double r27645 = r27644 * r27644;
double r27646 = r27645 * r27644;
double r27647 = cbrt(r27646);
double r27648 = r27644 * r27647;
double r27649 = r27648 * r27647;
double r27650 = r27649 - r27615;
double r27651 = r27633 / r27650;
double r27652 = r27619 ? r27632 : r27651;
double r27653 = r27615 - r27636;
double r27654 = r27620 - r27653;
double r27655 = r27654 / r27631;
double r27656 = r27628 - r27615;
double r27657 = r27633 / r27656;
double r27658 = r27619 ? r27655 : r27657;
double r27659 = r27643 ? r27652 : r27658;
double r27660 = r27617 ? r27641 : r27659;
return r27660;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -128454993639955.03Initial program 23.1
Simplified23.1
Taylor expanded around -inf 8.1
if -128454993639955.03 < b < 1.0610691325078738e+20Initial program 9.6
Simplified9.6
rmApplied add-cube-cbrt10.0
rmApplied add-cube-cbrt10.0
rmApplied add-cube-cbrt10.1
if 1.0610691325078738e+20 < b Initial program 34.5
Simplified34.5
Taylor expanded around inf 11.6
Final simplification9.8
herbie shell --seed 2019350
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))