\begin{array}{l}
\mathbf{if}\;b \ge 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 -5.148407540792454 \cdot 10^{+110}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt[3]{\sqrt{b \cdot b + \left(-4 \cdot a\right) \cdot c} \cdot \left(b \cdot b + \left(-4 \cdot a\right) \cdot c\right)}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(\left(c \cdot \frac{\sqrt[3]{a}}{\sqrt[3]{b}}\right) \cdot \frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt[3]{b} \cdot \sqrt[3]{b}} - b\right) \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \le 1.6529445176198465 \cdot 10^{+100}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(c \cdot \frac{a}{b} - b\right) \cdot 2}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(c \cdot \frac{a}{b} - b\right) \cdot 2}\\
\end{array}double f(double a, double b, double c) {
double r1557592 = b;
double r1557593 = 0.0;
bool r1557594 = r1557592 >= r1557593;
double r1557595 = -r1557592;
double r1557596 = r1557592 * r1557592;
double r1557597 = 4.0;
double r1557598 = a;
double r1557599 = r1557597 * r1557598;
double r1557600 = c;
double r1557601 = r1557599 * r1557600;
double r1557602 = r1557596 - r1557601;
double r1557603 = sqrt(r1557602);
double r1557604 = r1557595 - r1557603;
double r1557605 = 2.0;
double r1557606 = r1557605 * r1557598;
double r1557607 = r1557604 / r1557606;
double r1557608 = r1557605 * r1557600;
double r1557609 = r1557595 + r1557603;
double r1557610 = r1557608 / r1557609;
double r1557611 = r1557594 ? r1557607 : r1557610;
return r1557611;
}
double f(double a, double b, double c) {
double r1557612 = b;
double r1557613 = -5.148407540792454e+110;
bool r1557614 = r1557612 <= r1557613;
double r1557615 = 0.0;
bool r1557616 = r1557612 >= r1557615;
double r1557617 = -r1557612;
double r1557618 = r1557612 * r1557612;
double r1557619 = -4.0;
double r1557620 = a;
double r1557621 = r1557619 * r1557620;
double r1557622 = c;
double r1557623 = r1557621 * r1557622;
double r1557624 = r1557618 + r1557623;
double r1557625 = sqrt(r1557624);
double r1557626 = r1557625 * r1557624;
double r1557627 = cbrt(r1557626);
double r1557628 = r1557617 - r1557627;
double r1557629 = 2.0;
double r1557630 = r1557620 * r1557629;
double r1557631 = r1557628 / r1557630;
double r1557632 = r1557622 * r1557629;
double r1557633 = cbrt(r1557620);
double r1557634 = cbrt(r1557612);
double r1557635 = r1557633 / r1557634;
double r1557636 = r1557622 * r1557635;
double r1557637 = r1557633 * r1557633;
double r1557638 = r1557634 * r1557634;
double r1557639 = r1557637 / r1557638;
double r1557640 = r1557636 * r1557639;
double r1557641 = r1557640 - r1557612;
double r1557642 = r1557641 * r1557629;
double r1557643 = r1557632 / r1557642;
double r1557644 = r1557616 ? r1557631 : r1557643;
double r1557645 = 1.6529445176198465e+100;
bool r1557646 = r1557612 <= r1557645;
double r1557647 = 4.0;
double r1557648 = r1557647 * r1557620;
double r1557649 = r1557648 * r1557622;
double r1557650 = r1557618 - r1557649;
double r1557651 = sqrt(r1557650);
double r1557652 = r1557617 - r1557651;
double r1557653 = r1557652 / r1557630;
double r1557654 = sqrt(r1557651);
double r1557655 = r1557654 * r1557654;
double r1557656 = r1557617 + r1557655;
double r1557657 = r1557632 / r1557656;
double r1557658 = r1557616 ? r1557653 : r1557657;
double r1557659 = r1557620 / r1557612;
double r1557660 = r1557622 * r1557659;
double r1557661 = r1557660 - r1557612;
double r1557662 = r1557661 * r1557629;
double r1557663 = r1557662 / r1557630;
double r1557664 = r1557632 / r1557662;
double r1557665 = r1557616 ? r1557663 : r1557664;
double r1557666 = r1557646 ? r1557658 : r1557665;
double r1557667 = r1557614 ? r1557644 : r1557666;
return r1557667;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.148407540792454e+110Initial program 31.4
Taylor expanded around -inf 6.1
Simplified2.4
rmApplied add-cube-cbrt2.4
Applied add-cube-cbrt2.4
Applied times-frac2.4
Applied associate-*l*2.4
rmApplied add-cbrt-cube2.4
Simplified2.4
if -5.148407540792454e+110 < b < 1.6529445176198465e+100Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 1.6529445176198465e+100 < b Initial program 44.2
Taylor expanded around -inf 44.2
Simplified44.2
Taylor expanded around inf 9.3
Simplified3.5
Final simplification6.5
herbie shell --seed 2019151
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))