\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le -1.951254764388741219368659145895391722321 \cdot 10^{95}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\
\mathbf{elif}\;b_2 \le 1.739506439947909364444676366873273107151 \cdot 10^{-284}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(-c, a, b_2 \cdot b_2\right)} - b_2}{a} \cdot a}\\
\mathbf{elif}\;b_2 \le 2098867031.934578418731689453125:\\
\;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - c \cdot a}}}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, -2 \cdot \frac{b_2}{a}\right)\\
\end{array}double f(double a, double b_2, double c) {
double r34596 = b_2;
double r34597 = -r34596;
double r34598 = r34596 * r34596;
double r34599 = a;
double r34600 = c;
double r34601 = r34599 * r34600;
double r34602 = r34598 - r34601;
double r34603 = sqrt(r34602);
double r34604 = r34597 - r34603;
double r34605 = r34604 / r34599;
return r34605;
}
double f(double a, double b_2, double c) {
double r34606 = b_2;
double r34607 = -1.9512547643887412e+95;
bool r34608 = r34606 <= r34607;
double r34609 = -0.5;
double r34610 = c;
double r34611 = r34610 / r34606;
double r34612 = r34609 * r34611;
double r34613 = 1.7395064399479094e-284;
bool r34614 = r34606 <= r34613;
double r34615 = -r34610;
double r34616 = a;
double r34617 = r34606 * r34606;
double r34618 = fma(r34615, r34616, r34617);
double r34619 = sqrt(r34618);
double r34620 = r34619 - r34606;
double r34621 = r34620 / r34616;
double r34622 = r34621 * r34616;
double r34623 = r34610 / r34622;
double r34624 = 2098867031.9345784;
bool r34625 = r34606 <= r34624;
double r34626 = 1.0;
double r34627 = -r34606;
double r34628 = r34610 * r34616;
double r34629 = r34617 - r34628;
double r34630 = sqrt(r34629);
double r34631 = r34627 - r34630;
double r34632 = r34616 / r34631;
double r34633 = r34626 / r34632;
double r34634 = 0.5;
double r34635 = -2.0;
double r34636 = r34606 / r34616;
double r34637 = r34635 * r34636;
double r34638 = fma(r34634, r34611, r34637);
double r34639 = r34625 ? r34633 : r34638;
double r34640 = r34614 ? r34623 : r34639;
double r34641 = r34608 ? r34612 : r34640;
return r34641;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < -1.9512547643887412e+95Initial program 58.9
Taylor expanded around -inf 2.3
if -1.9512547643887412e+95 < b_2 < 1.7395064399479094e-284Initial program 32.7
rmApplied flip--32.7
Simplified17.0
Simplified17.0
rmApplied add-cube-cbrt17.2
Applied add-sqr-sqrt17.2
Applied sqrt-prod17.3
Applied prod-diff17.3
Simplified17.0
Simplified17.0
rmApplied *-un-lft-identity17.0
Applied *-un-lft-identity17.0
Applied times-frac17.0
Simplified17.0
Simplified15.4
rmApplied associate-*r/15.4
Applied associate-/l/11.2
Simplified11.2
if 1.7395064399479094e-284 < b_2 < 2098867031.9345784Initial program 10.5
rmApplied clear-num10.6
Simplified10.6
if 2098867031.9345784 < b_2 Initial program 32.2
Taylor expanded around inf 7.0
Simplified7.0
Final simplification8.0
herbie shell --seed 2019209 +o rules:numerics
(FPCore (a b_2 c)
:name "quad2m (problem 3.2.1, negative)"
:precision binary64
(/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))