\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le -1.532647813487864998120433824563689483214 \cdot 10^{52}:\\
\;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\
\mathbf{elif}\;b_2 \le -1.571246895950165959018503319317416108871 \cdot 10^{-147}:\\
\;\;\;\;\frac{\frac{a \cdot c}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\
\mathbf{elif}\;b_2 \le 3.569161879972515120190840820324612209908 \cdot 10^{135}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)}}{a}\\
\mathbf{else}:\\
\;\;\;\;\left(-\frac{b_2}{a}\right) - \left(\frac{b_2}{a} - \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\
\end{array}double f(double a, double b_2, double c) {
double r29674 = b_2;
double r29675 = -r29674;
double r29676 = r29674 * r29674;
double r29677 = a;
double r29678 = c;
double r29679 = r29677 * r29678;
double r29680 = r29676 - r29679;
double r29681 = sqrt(r29680);
double r29682 = r29675 - r29681;
double r29683 = r29682 / r29677;
return r29683;
}
double f(double a, double b_2, double c) {
double r29684 = b_2;
double r29685 = -1.532647813487865e+52;
bool r29686 = r29684 <= r29685;
double r29687 = c;
double r29688 = r29687 / r29684;
double r29689 = -0.5;
double r29690 = r29688 * r29689;
double r29691 = -1.571246895950166e-147;
bool r29692 = r29684 <= r29691;
double r29693 = a;
double r29694 = r29693 * r29687;
double r29695 = r29684 * r29684;
double r29696 = r29695 - r29694;
double r29697 = sqrt(r29696);
double r29698 = r29697 - r29684;
double r29699 = r29694 / r29698;
double r29700 = r29699 / r29693;
double r29701 = 3.569161879972515e+135;
bool r29702 = r29684 <= r29701;
double r29703 = -r29684;
double r29704 = -r29694;
double r29705 = fma(r29684, r29684, r29704);
double r29706 = sqrt(r29705);
double r29707 = r29703 - r29706;
double r29708 = r29707 / r29693;
double r29709 = r29684 / r29693;
double r29710 = -r29709;
double r29711 = 0.5;
double r29712 = r29684 / r29687;
double r29713 = r29711 / r29712;
double r29714 = r29709 - r29713;
double r29715 = r29710 - r29714;
double r29716 = r29702 ? r29708 : r29715;
double r29717 = r29692 ? r29700 : r29716;
double r29718 = r29686 ? r29690 : r29717;
return r29718;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < -1.532647813487865e+52Initial program 57.3
Taylor expanded around -inf 3.6
Simplified3.6
if -1.532647813487865e+52 < b_2 < -1.571246895950166e-147Initial program 37.3
rmApplied flip--37.3
Simplified16.9
Simplified16.9
if -1.571246895950166e-147 < b_2 < 3.569161879972515e+135Initial program 11.4
rmApplied div-sub11.4
Simplified11.4
rmApplied distribute-neg-frac11.4
Applied sub-div11.4
Simplified11.4
if 3.569161879972515e+135 < b_2 Initial program 56.9
rmApplied div-sub56.9
Simplified56.9
Taylor expanded around inf 2.5
Simplified2.5
Final simplification8.9
herbie shell --seed 2019195 +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))