\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -7.031354366652439074047233382039797740753 \cdot 10^{153}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.439486791909314232881662748266490355252 \cdot 10^{54}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \left(\sqrt[3]{\frac{c}{\sqrt[3]{b}}} \cdot \sqrt[3]{\frac{c}{\sqrt[3]{b}}}\right)\right) \cdot \sqrt[3]{\frac{c}{\sqrt[3]{b}}}\right) - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r28133 = b;
double r28134 = 0.0;
bool r28135 = r28133 >= r28134;
double r28136 = 2.0;
double r28137 = c;
double r28138 = r28136 * r28137;
double r28139 = -r28133;
double r28140 = r28133 * r28133;
double r28141 = 4.0;
double r28142 = a;
double r28143 = r28141 * r28142;
double r28144 = r28143 * r28137;
double r28145 = r28140 - r28144;
double r28146 = sqrt(r28145);
double r28147 = r28139 - r28146;
double r28148 = r28138 / r28147;
double r28149 = r28139 + r28146;
double r28150 = r28136 * r28142;
double r28151 = r28149 / r28150;
double r28152 = r28135 ? r28148 : r28151;
return r28152;
}
double f(double a, double b, double c) {
double r28153 = b;
double r28154 = -7.031354366652439e+153;
bool r28155 = r28153 <= r28154;
double r28156 = 0.0;
bool r28157 = r28153 >= r28156;
double r28158 = 2.0;
double r28159 = c;
double r28160 = r28158 * r28159;
double r28161 = -r28153;
double r28162 = r28153 * r28153;
double r28163 = 4.0;
double r28164 = a;
double r28165 = r28163 * r28164;
double r28166 = r28165 * r28159;
double r28167 = r28162 - r28166;
double r28168 = sqrt(r28167);
double r28169 = r28161 - r28168;
double r28170 = r28160 / r28169;
double r28171 = r28164 * r28159;
double r28172 = r28171 / r28153;
double r28173 = r28158 * r28172;
double r28174 = r28173 - r28153;
double r28175 = r28161 + r28174;
double r28176 = r28158 * r28164;
double r28177 = r28175 / r28176;
double r28178 = r28157 ? r28170 : r28177;
double r28179 = 1.4394867919093142e+54;
bool r28180 = r28153 <= r28179;
double r28181 = sqrt(r28168);
double r28182 = r28181 * r28181;
double r28183 = r28161 - r28182;
double r28184 = r28160 / r28183;
double r28185 = r28161 + r28168;
double r28186 = r28185 / r28176;
double r28187 = r28157 ? r28184 : r28186;
double r28188 = cbrt(r28153);
double r28189 = r28188 * r28188;
double r28190 = r28164 / r28189;
double r28191 = r28159 / r28188;
double r28192 = cbrt(r28191);
double r28193 = r28192 * r28192;
double r28194 = r28190 * r28193;
double r28195 = r28194 * r28192;
double r28196 = r28158 * r28195;
double r28197 = 2.0;
double r28198 = r28197 * r28153;
double r28199 = r28196 - r28198;
double r28200 = r28160 / r28199;
double r28201 = r28153 - r28173;
double r28202 = r28161 + r28201;
double r28203 = r28202 / r28176;
double r28204 = r28157 ? r28200 : r28203;
double r28205 = r28180 ? r28187 : r28204;
double r28206 = r28155 ? r28178 : r28205;
return r28206;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.031354366652439e+153Initial program 63.9
Taylor expanded around -inf 11.1
if -7.031354366652439e+153 < b < 1.4394867919093142e+54Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
if 1.4394867919093142e+54 < b Initial program 25.8
Taylor expanded around inf 6.6
rmApplied add-cube-cbrt6.6
Applied times-frac3.5
rmApplied add-cube-cbrt3.5
Applied associate-*r*3.5
Taylor expanded around inf 3.5
Final simplification7.8
herbie shell --seed 2020002
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))