\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.350676057343211554491874986591947593393 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}\right)\right)}\\
\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 \frac{-1293074861987861}{2.904329899370670044527465816699024531506 \cdot 10^{281}}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}\\
\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 \le 1.287594296476507417293820707954348336152 \cdot 10^{78}:\\
\;\;\;\;\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{\frac{\left(4 \cdot a\right) \cdot c}{-\left(b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt[3]{{\left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}^{3}}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r33345 = b;
double r33346 = 0.0;
bool r33347 = r33345 >= r33346;
double r33348 = 2.0;
double r33349 = c;
double r33350 = r33348 * r33349;
double r33351 = -r33345;
double r33352 = r33345 * r33345;
double r33353 = 4.0;
double r33354 = a;
double r33355 = r33353 * r33354;
double r33356 = r33355 * r33349;
double r33357 = r33352 - r33356;
double r33358 = sqrt(r33357);
double r33359 = r33351 - r33358;
double r33360 = r33350 / r33359;
double r33361 = r33351 + r33358;
double r33362 = r33348 * r33354;
double r33363 = r33361 / r33362;
double r33364 = r33347 ? r33360 : r33363;
return r33364;
}
double f(double a, double b, double c) {
double r33365 = b;
double r33366 = -1.3506760573432116e+154;
bool r33367 = r33365 <= r33366;
double r33368 = 0.0;
bool r33369 = r33365 >= r33368;
double r33370 = 2.0;
double r33371 = c;
double r33372 = r33370 * r33371;
double r33373 = -r33365;
double r33374 = a;
double r33375 = sqrt(r33365);
double r33376 = r33374 / r33375;
double r33377 = r33371 / r33375;
double r33378 = r33376 * r33377;
double r33379 = r33370 * r33378;
double r33380 = r33365 - r33379;
double r33381 = r33373 - r33380;
double r33382 = r33372 / r33381;
double r33383 = r33374 * r33371;
double r33384 = r33383 / r33365;
double r33385 = r33370 * r33384;
double r33386 = r33385 - r33365;
double r33387 = r33373 + r33386;
double r33388 = r33370 * r33374;
double r33389 = r33387 / r33388;
double r33390 = r33369 ? r33382 : r33389;
double r33391 = -1293074861987861.0;
double r33392 = 2.90432989937067e+281;
double r33393 = r33391 / r33392;
bool r33394 = r33365 <= r33393;
double r33395 = 4.0;
double r33396 = r33395 * r33383;
double r33397 = r33365 * r33365;
double r33398 = r33395 * r33374;
double r33399 = r33398 * r33371;
double r33400 = r33397 - r33399;
double r33401 = sqrt(r33400);
double r33402 = r33401 - r33365;
double r33403 = r33396 / r33402;
double r33404 = r33372 / r33403;
double r33405 = r33373 + r33401;
double r33406 = r33405 / r33388;
double r33407 = r33369 ? r33404 : r33406;
double r33408 = 1.2875942964765074e+78;
bool r33409 = r33365 <= r33408;
double r33410 = r33373 - r33401;
double r33411 = r33372 / r33410;
double r33412 = r33365 + r33401;
double r33413 = -r33412;
double r33414 = r33399 / r33413;
double r33415 = r33414 / r33388;
double r33416 = r33369 ? r33411 : r33415;
double r33417 = 3.0;
double r33418 = pow(r33401, r33417);
double r33419 = cbrt(r33418);
double r33420 = r33373 + r33419;
double r33421 = r33420 / r33388;
double r33422 = r33369 ? r33382 : r33421;
double r33423 = r33409 ? r33416 : r33422;
double r33424 = r33394 ? r33407 : r33423;
double r33425 = r33367 ? r33390 : r33424;
return r33425;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3506760573432116e+154Initial program 64.0
Taylor expanded around inf 64.0
rmApplied add-sqr-sqrt64.0
Applied times-frac64.0
Taylor expanded around -inf 11.8
if -1.3506760573432116e+154 < b < -4.452231346955638e-267Initial program 7.7
rmApplied flip--7.7
Simplified7.7
Simplified7.7
if -4.452231346955638e-267 < b < 1.2875942964765074e+78Initial program 9.5
rmApplied add-sqr-sqrt9.5
Applied sqrt-prod9.5
rmApplied flip-+9.5
Simplified9.5
Simplified9.5
if 1.2875942964765074e+78 < b Initial program 27.8
Taylor expanded around inf 7.2
rmApplied add-sqr-sqrt7.2
Applied times-frac3.1
rmApplied add-cbrt-cube3.1
Simplified3.1
Final simplification7.5
herbie shell --seed 2019303
(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))))