\begin{array}{l}
\mathbf{if}\;b \ge 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 -1.4683401748616168 \cdot 10^{+147}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 8.82536041418557 \cdot 10^{+84}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r464288 = b;
double r464289 = 0.0;
bool r464290 = r464288 >= r464289;
double r464291 = 2.0;
double r464292 = c;
double r464293 = r464291 * r464292;
double r464294 = -r464288;
double r464295 = r464288 * r464288;
double r464296 = 4.0;
double r464297 = a;
double r464298 = r464296 * r464297;
double r464299 = r464298 * r464292;
double r464300 = r464295 - r464299;
double r464301 = sqrt(r464300);
double r464302 = r464294 - r464301;
double r464303 = r464293 / r464302;
double r464304 = r464294 + r464301;
double r464305 = r464291 * r464297;
double r464306 = r464304 / r464305;
double r464307 = r464290 ? r464303 : r464306;
return r464307;
}
double f(double a, double b, double c) {
double r464308 = b;
double r464309 = -1.4683401748616168e+147;
bool r464310 = r464308 <= r464309;
double r464311 = 0.0;
bool r464312 = r464308 >= r464311;
double r464313 = 2.0;
double r464314 = c;
double r464315 = r464313 * r464314;
double r464316 = -r464308;
double r464317 = r464308 * r464308;
double r464318 = 4.0;
double r464319 = a;
double r464320 = r464318 * r464319;
double r464321 = r464320 * r464314;
double r464322 = r464317 - r464321;
double r464323 = sqrt(r464322);
double r464324 = r464316 - r464323;
double r464325 = r464315 / r464324;
double r464326 = r464319 / r464308;
double r464327 = r464326 * r464314;
double r464328 = r464327 - r464308;
double r464329 = r464313 * r464328;
double r464330 = r464313 * r464319;
double r464331 = r464329 / r464330;
double r464332 = r464312 ? r464325 : r464331;
double r464333 = 8.82536041418557e+84;
bool r464334 = r464308 <= r464333;
double r464335 = cbrt(r464322);
double r464336 = sqrt(r464335);
double r464337 = r464335 * r464335;
double r464338 = sqrt(r464337);
double r464339 = r464336 * r464338;
double r464340 = r464316 - r464339;
double r464341 = r464315 / r464340;
double r464342 = r464323 + r464316;
double r464343 = r464342 / r464330;
double r464344 = r464312 ? r464341 : r464343;
double r464345 = r464319 * r464314;
double r464346 = r464345 / r464308;
double r464347 = r464313 * r464346;
double r464348 = r464308 - r464347;
double r464349 = r464316 - r464348;
double r464350 = r464315 / r464349;
double r464351 = r464312 ? r464350 : r464343;
double r464352 = r464334 ? r464344 : r464351;
double r464353 = r464310 ? r464332 : r464352;
return r464353;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.4683401748616168e+147Initial program 58.2
rmApplied add-sqr-sqrt58.2
Applied sqrt-prod58.2
Taylor expanded around -inf 11.3
Simplified2.1
if -1.4683401748616168e+147 < b < 8.82536041418557e+84Initial program 8.2
rmApplied add-cube-cbrt8.4
Applied sqrt-prod8.5
if 8.82536041418557e+84 < b Initial program 26.6
Taylor expanded around inf 6.0
Final simplification7.1
herbie shell --seed 2019132
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))