\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 -7.031354366652439074047233382039797740753 \cdot 10^{153}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.947510423350864326592355394008700948277 \cdot 10^{-310}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(b, b, -\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right)\right)}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{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}\\
\mathbf{elif}\;b \le 6.614815782594423881712543712874288384103 \cdot 10^{53}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(\left(4 \cdot a\right) \cdot \left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right)\right) \cdot \sqrt[3]{c}}}\\
\end{array}double f(double a, double b, double c) {
double r73736 = b;
double r73737 = 0.0;
bool r73738 = r73736 >= r73737;
double r73739 = -r73736;
double r73740 = r73736 * r73736;
double r73741 = 4.0;
double r73742 = a;
double r73743 = r73741 * r73742;
double r73744 = c;
double r73745 = r73743 * r73744;
double r73746 = r73740 - r73745;
double r73747 = sqrt(r73746);
double r73748 = r73739 - r73747;
double r73749 = 2.0;
double r73750 = r73749 * r73742;
double r73751 = r73748 / r73750;
double r73752 = r73749 * r73744;
double r73753 = r73739 + r73747;
double r73754 = r73752 / r73753;
double r73755 = r73738 ? r73751 : r73754;
return r73755;
}
double f(double a, double b, double c) {
double r73756 = b;
double r73757 = -7.031354366652439e+153;
bool r73758 = r73756 <= r73757;
double r73759 = 0.0;
bool r73760 = r73756 >= r73759;
double r73761 = -r73756;
double r73762 = r73756 * r73756;
double r73763 = 4.0;
double r73764 = a;
double r73765 = r73763 * r73764;
double r73766 = c;
double r73767 = r73765 * r73766;
double r73768 = r73762 - r73767;
double r73769 = sqrt(r73768);
double r73770 = r73761 - r73769;
double r73771 = 2.0;
double r73772 = r73771 * r73764;
double r73773 = r73770 / r73772;
double r73774 = r73771 * r73766;
double r73775 = r73764 * r73766;
double r73776 = r73775 / r73756;
double r73777 = r73771 * r73776;
double r73778 = r73777 - r73756;
double r73779 = r73761 + r73778;
double r73780 = r73774 / r73779;
double r73781 = r73760 ? r73773 : r73780;
double r73782 = 2.94751042335086e-310;
bool r73783 = r73756 <= r73782;
double r73784 = -r73768;
double r73785 = fma(r73756, r73756, r73784);
double r73786 = r73769 - r73756;
double r73787 = r73785 / r73786;
double r73788 = r73787 / r73772;
double r73789 = r73761 + r73769;
double r73790 = r73774 / r73789;
double r73791 = r73760 ? r73788 : r73790;
double r73792 = 6.614815782594424e+53;
bool r73793 = r73756 <= r73792;
double r73794 = 1.0;
double r73795 = r73766 / r73756;
double r73796 = r73756 / r73764;
double r73797 = r73795 - r73796;
double r73798 = r73794 * r73797;
double r73799 = cbrt(r73766);
double r73800 = r73799 * r73799;
double r73801 = r73765 * r73800;
double r73802 = r73801 * r73799;
double r73803 = r73762 - r73802;
double r73804 = sqrt(r73803);
double r73805 = r73761 + r73804;
double r73806 = r73774 / r73805;
double r73807 = r73760 ? r73798 : r73806;
double r73808 = r73793 ? r73781 : r73807;
double r73809 = r73783 ? r73791 : r73808;
double r73810 = r73758 ? r73781 : r73809;
return r73810;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -7.031354366652439e+153 or 2.94751042335086e-310 < b < 6.614815782594424e+53Initial program 21.2
Taylor expanded around -inf 8.6
if -7.031354366652439e+153 < b < 2.94751042335086e-310Initial program 8.2
rmApplied flip--8.2
Simplified8.2
Simplified8.2
if 6.614815782594424e+53 < b Initial program 37.9
Taylor expanded around inf 10.1
Taylor expanded around 0 5.1
Simplified5.1
rmApplied add-cube-cbrt5.1
Applied associate-*r*5.1
Final simplification7.8
herbie shell --seed 2020002 +o rules:numerics
(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)))))))