\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.329298386451440676631327446927623911346 \cdot 10^{154}:\\
\;\;\;\;\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 6.40122866550583535543788208938357529969 \cdot 10^{-310}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt[3]{{\left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}^{3}}}\\
\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.036728997153048820229367565568256143297 \cdot 10^{99}:\\
\;\;\;\;\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 \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\left(\sqrt[3]{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}} \cdot \sqrt[3]{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}}\right) \cdot \sqrt[3]{\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}}\right) - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + e^{\log \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r42341 = b;
double r42342 = 0.0;
bool r42343 = r42341 >= r42342;
double r42344 = 2.0;
double r42345 = c;
double r42346 = r42344 * r42345;
double r42347 = -r42341;
double r42348 = r42341 * r42341;
double r42349 = 4.0;
double r42350 = a;
double r42351 = r42349 * r42350;
double r42352 = r42351 * r42345;
double r42353 = r42348 - r42352;
double r42354 = sqrt(r42353);
double r42355 = r42347 - r42354;
double r42356 = r42346 / r42355;
double r42357 = r42347 + r42354;
double r42358 = r42344 * r42350;
double r42359 = r42357 / r42358;
double r42360 = r42343 ? r42356 : r42359;
return r42360;
}
double f(double a, double b, double c) {
double r42361 = b;
double r42362 = -1.3292983864514407e+154;
bool r42363 = r42361 <= r42362;
double r42364 = 0.0;
bool r42365 = r42361 >= r42364;
double r42366 = 2.0;
double r42367 = c;
double r42368 = r42366 * r42367;
double r42369 = -r42361;
double r42370 = r42361 * r42361;
double r42371 = 4.0;
double r42372 = a;
double r42373 = r42371 * r42372;
double r42374 = r42373 * r42367;
double r42375 = r42370 - r42374;
double r42376 = sqrt(r42375);
double r42377 = r42369 - r42376;
double r42378 = r42368 / r42377;
double r42379 = r42372 * r42367;
double r42380 = r42379 / r42361;
double r42381 = r42366 * r42380;
double r42382 = r42381 - r42361;
double r42383 = r42369 + r42382;
double r42384 = r42366 * r42372;
double r42385 = r42383 / r42384;
double r42386 = r42365 ? r42378 : r42385;
double r42387 = 6.40122866550584e-310;
bool r42388 = r42361 <= r42387;
double r42389 = 3.0;
double r42390 = pow(r42376, r42389);
double r42391 = cbrt(r42390);
double r42392 = r42369 - r42391;
double r42393 = r42368 / r42392;
double r42394 = r42369 + r42376;
double r42395 = r42394 / r42384;
double r42396 = r42365 ? r42393 : r42395;
double r42397 = 1.0367289971530488e+99;
bool r42398 = r42361 <= r42397;
double r42399 = cbrt(r42361);
double r42400 = r42399 * r42399;
double r42401 = r42372 / r42400;
double r42402 = r42367 / r42399;
double r42403 = r42401 * r42402;
double r42404 = cbrt(r42403);
double r42405 = r42404 * r42404;
double r42406 = r42405 * r42404;
double r42407 = r42366 * r42406;
double r42408 = 2.0;
double r42409 = r42408 * r42361;
double r42410 = r42407 - r42409;
double r42411 = r42368 / r42410;
double r42412 = log(r42376);
double r42413 = exp(r42412);
double r42414 = r42369 + r42413;
double r42415 = r42414 / r42384;
double r42416 = r42365 ? r42411 : r42415;
double r42417 = r42398 ? r42386 : r42416;
double r42418 = r42388 ? r42396 : r42417;
double r42419 = r42363 ? r42386 : r42418;
return r42419;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3292983864514407e+154 or 6.40122866550584e-310 < b < 1.0367289971530488e+99Initial program 23.6
Taylor expanded around -inf 9.5
if -1.3292983864514407e+154 < b < 6.40122866550584e-310Initial program 9.5
rmApplied add-cbrt-cube9.5
Simplified9.5
if 1.0367289971530488e+99 < b Initial program 30.3
Taylor expanded around inf 6.4
rmApplied add-cube-cbrt6.4
Applied times-frac2.4
rmApplied add-cube-cbrt2.4
rmApplied add-exp-log2.4
Final simplification7.7
herbie shell --seed 2019353
(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))))