\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le -868804.7105499643:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\
\mathbf{elif}\;b_2 \le -1.1921243675281261 \cdot 10^{-86}:\\
\;\;\;\;\left(\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2} \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right)\right) \cdot \sqrt[3]{\frac{1}{a}}\\
\mathbf{elif}\;b_2 \le 2.408727112940545 \cdot 10^{+124}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \left(\frac{c}{b_2}\right), \left(\frac{b_2 \cdot -2}{a}\right)\right)\\
\end{array}double f(double a, double b_2, double c) {
double r508492 = b_2;
double r508493 = -r508492;
double r508494 = r508492 * r508492;
double r508495 = a;
double r508496 = c;
double r508497 = r508495 * r508496;
double r508498 = r508494 - r508497;
double r508499 = sqrt(r508498);
double r508500 = r508493 - r508499;
double r508501 = r508500 / r508495;
return r508501;
}
double f(double a, double b_2, double c) {
double r508502 = b_2;
double r508503 = -868804.7105499643;
bool r508504 = r508502 <= r508503;
double r508505 = -0.5;
double r508506 = c;
double r508507 = r508506 / r508502;
double r508508 = r508505 * r508507;
double r508509 = -1.1921243675281261e-86;
bool r508510 = r508502 <= r508509;
double r508511 = a;
double r508512 = r508511 * r508506;
double r508513 = r508502 * r508502;
double r508514 = r508513 - r508513;
double r508515 = r508512 + r508514;
double r508516 = r508513 - r508512;
double r508517 = sqrt(r508516);
double r508518 = r508517 - r508502;
double r508519 = r508515 / r508518;
double r508520 = 1.0;
double r508521 = r508520 / r508511;
double r508522 = cbrt(r508521);
double r508523 = r508522 * r508522;
double r508524 = r508519 * r508523;
double r508525 = r508524 * r508522;
double r508526 = 2.408727112940545e+124;
bool r508527 = r508502 <= r508526;
double r508528 = -r508502;
double r508529 = r508528 - r508517;
double r508530 = r508529 / r508511;
double r508531 = 0.5;
double r508532 = -2.0;
double r508533 = r508502 * r508532;
double r508534 = r508533 / r508511;
double r508535 = fma(r508531, r508507, r508534);
double r508536 = r508527 ? r508530 : r508535;
double r508537 = r508510 ? r508525 : r508536;
double r508538 = r508504 ? r508508 : r508537;
return r508538;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < -868804.7105499643Initial program 55.2
Taylor expanded around -inf 5.5
if -868804.7105499643 < b_2 < -1.1921243675281261e-86Initial program 37.7
Taylor expanded around inf 37.7
Simplified37.7
rmApplied div-inv37.7
rmApplied add-cube-cbrt38.1
Applied associate-*r*38.1
rmApplied flip--38.2
Simplified17.6
Simplified17.6
if -1.1921243675281261e-86 < b_2 < 2.408727112940545e+124Initial program 12.0
Taylor expanded around inf 12.0
Simplified12.0
if 2.408727112940545e+124 < b_2 Initial program 50.3
Taylor expanded around inf 3.1
Simplified3.2
Final simplification9.1
herbie shell --seed 2019129 +o rules:numerics
(FPCore (a b_2 c)
:name "quad2m (problem 3.2.1, negative)"
(/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))