\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 -1.817538956128737910313223826252725863032 \cdot 10^{60}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \le 9.530261110323184759699280265267192959681 \cdot 10^{142}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\sqrt[3]{b \cdot b - \left(a \cdot 4\right) \cdot c}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(a \cdot 4\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(a \cdot 4\right) \cdot c}} + \left(-b\right)}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{c}{b} \cdot a\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c}} + \left(-b\right)}{a \cdot 2}\\
\end{array}double f(double a, double b, double c) {
double r938264 = b;
double r938265 = 0.0;
bool r938266 = r938264 >= r938265;
double r938267 = 2.0;
double r938268 = c;
double r938269 = r938267 * r938268;
double r938270 = -r938264;
double r938271 = r938264 * r938264;
double r938272 = 4.0;
double r938273 = a;
double r938274 = r938272 * r938273;
double r938275 = r938274 * r938268;
double r938276 = r938271 - r938275;
double r938277 = sqrt(r938276);
double r938278 = r938270 - r938277;
double r938279 = r938269 / r938278;
double r938280 = r938270 + r938277;
double r938281 = r938267 * r938273;
double r938282 = r938280 / r938281;
double r938283 = r938266 ? r938279 : r938282;
return r938283;
}
double f(double a, double b, double c) {
double r938284 = b;
double r938285 = -1.817538956128738e+60;
bool r938286 = r938284 <= r938285;
double r938287 = 0.0;
bool r938288 = r938284 >= r938287;
double r938289 = 2.0;
double r938290 = c;
double r938291 = r938289 * r938290;
double r938292 = -r938284;
double r938293 = r938284 * r938284;
double r938294 = a;
double r938295 = 4.0;
double r938296 = r938294 * r938295;
double r938297 = r938296 * r938290;
double r938298 = r938293 - r938297;
double r938299 = sqrt(r938298);
double r938300 = r938292 - r938299;
double r938301 = r938291 / r938300;
double r938302 = r938294 * r938290;
double r938303 = r938302 / r938284;
double r938304 = r938289 * r938303;
double r938305 = r938304 - r938284;
double r938306 = r938292 + r938305;
double r938307 = r938294 * r938289;
double r938308 = r938306 / r938307;
double r938309 = r938288 ? r938301 : r938308;
double r938310 = 9.530261110323185e+142;
bool r938311 = r938284 <= r938310;
double r938312 = cbrt(r938298);
double r938313 = sqrt(r938312);
double r938314 = r938312 * r938312;
double r938315 = sqrt(r938314);
double r938316 = r938313 * r938315;
double r938317 = r938316 + r938292;
double r938318 = r938317 / r938307;
double r938319 = r938288 ? r938301 : r938318;
double r938320 = r938290 / r938284;
double r938321 = r938320 * r938294;
double r938322 = r938289 * r938321;
double r938323 = r938284 - r938322;
double r938324 = r938292 - r938323;
double r938325 = r938291 / r938324;
double r938326 = sqrt(r938299);
double r938327 = r938326 * r938326;
double r938328 = r938327 + r938292;
double r938329 = r938328 / r938307;
double r938330 = r938288 ? r938325 : r938329;
double r938331 = r938311 ? r938319 : r938330;
double r938332 = r938286 ? r938309 : r938331;
return r938332;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.817538956128738e+60Initial program 40.1
Taylor expanded around -inf 10.6
if -1.817538956128738e+60 < b < 9.530261110323185e+142Initial program 8.7
rmApplied add-cube-cbrt8.8
Applied sqrt-prod8.8
if 9.530261110323185e+142 < b Initial program 36.6
rmApplied add-sqr-sqrt36.6
Applied sqrt-prod36.6
Taylor expanded around inf 6.0
rmApplied *-un-lft-identity6.0
Applied times-frac1.4
Simplified1.4
Final simplification7.7
herbie shell --seed 2019200
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))