\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 -1.361371441856741221428064888771237209188 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) - b}\\
\end{array}\\
\mathbf{elif}\;b \le 2.750597423682242910828949792302222725036 \cdot 10^{107}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\frac{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right) - b \cdot b}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}\\
\end{array}double f(double a, double b, double c) {
double r30676 = b;
double r30677 = 0.0;
bool r30678 = r30676 >= r30677;
double r30679 = -r30676;
double r30680 = r30676 * r30676;
double r30681 = 4.0;
double r30682 = a;
double r30683 = r30681 * r30682;
double r30684 = c;
double r30685 = r30683 * r30684;
double r30686 = r30680 - r30685;
double r30687 = sqrt(r30686);
double r30688 = r30679 - r30687;
double r30689 = 2.0;
double r30690 = r30689 * r30682;
double r30691 = r30688 / r30690;
double r30692 = r30689 * r30684;
double r30693 = r30679 + r30687;
double r30694 = r30692 / r30693;
double r30695 = r30678 ? r30691 : r30694;
return r30695;
}
double f(double a, double b, double c) {
double r30696 = b;
double r30697 = -1.3613714418567412e+154;
bool r30698 = r30696 <= r30697;
double r30699 = 0.0;
bool r30700 = r30696 >= r30699;
double r30701 = -r30696;
double r30702 = r30696 * r30696;
double r30703 = 4.0;
double r30704 = a;
double r30705 = r30703 * r30704;
double r30706 = c;
double r30707 = r30705 * r30706;
double r30708 = r30702 - r30707;
double r30709 = sqrt(r30708);
double r30710 = r30701 - r30709;
double r30711 = 2.0;
double r30712 = r30711 * r30704;
double r30713 = r30710 / r30712;
double r30714 = r30711 * r30706;
double r30715 = r30704 * r30706;
double r30716 = r30715 / r30696;
double r30717 = r30711 * r30716;
double r30718 = r30717 - r30696;
double r30719 = r30718 - r30696;
double r30720 = r30714 / r30719;
double r30721 = r30700 ? r30713 : r30720;
double r30722 = 2.750597423682243e+107;
bool r30723 = r30696 <= r30722;
double r30724 = sqrt(r30709);
double r30725 = r30724 * r30724;
double r30726 = r30701 - r30725;
double r30727 = r30726 / r30712;
double r30728 = r30709 - r30696;
double r30729 = r30714 / r30728;
double r30730 = r30700 ? r30727 : r30729;
double r30731 = 1.0;
double r30732 = r30706 / r30696;
double r30733 = r30696 / r30704;
double r30734 = r30732 - r30733;
double r30735 = r30731 * r30734;
double r30736 = r30708 - r30702;
double r30737 = r30709 + r30696;
double r30738 = r30736 / r30737;
double r30739 = r30714 / r30738;
double r30740 = r30700 ? r30735 : r30739;
double r30741 = r30723 ? r30730 : r30740;
double r30742 = r30698 ? r30721 : r30741;
return r30742;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3613714418567412e+154Initial program 38.2
Simplified38.2
Taylor expanded around -inf 6.1
if -1.3613714418567412e+154 < b < 2.750597423682243e+107Initial program 8.8
Simplified8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 2.750597423682243e+107 < b Initial program 49.6
Simplified49.6
Taylor expanded around inf 9.1
Taylor expanded around 0 3.1
Simplified3.1
rmApplied flip--3.1
Simplified3.1
Final simplification7.5
herbie shell --seed 2019235
(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)))))))