\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le -3.727723973148742563324153150500151191249 \cdot 10^{105}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\
\mathbf{elif}\;b_2 \le 1.364529283357116165462040672443911208369 \cdot 10^{-246}:\\
\;\;\;\;\frac{c}{\sqrt{\mathsf{fma}\left(b_2, b_2, -c \cdot a\right)} - b_2}\\
\mathbf{elif}\;b_2 \le 4.198650993474429809884798868723112488797 \cdot 10^{74}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, \frac{b_2}{a} \cdot -2\right)\\
\end{array}double f(double a, double b_2, double c) {
double r90001 = b_2;
double r90002 = -r90001;
double r90003 = r90001 * r90001;
double r90004 = a;
double r90005 = c;
double r90006 = r90004 * r90005;
double r90007 = r90003 - r90006;
double r90008 = sqrt(r90007);
double r90009 = r90002 - r90008;
double r90010 = r90009 / r90004;
return r90010;
}
double f(double a, double b_2, double c) {
double r90011 = b_2;
double r90012 = -3.7277239731487426e+105;
bool r90013 = r90011 <= r90012;
double r90014 = -0.5;
double r90015 = c;
double r90016 = r90015 / r90011;
double r90017 = r90014 * r90016;
double r90018 = 1.3645292833571162e-246;
bool r90019 = r90011 <= r90018;
double r90020 = a;
double r90021 = r90015 * r90020;
double r90022 = -r90021;
double r90023 = fma(r90011, r90011, r90022);
double r90024 = sqrt(r90023);
double r90025 = r90024 - r90011;
double r90026 = r90015 / r90025;
double r90027 = 4.19865099347443e+74;
bool r90028 = r90011 <= r90027;
double r90029 = -r90011;
double r90030 = r90029 / r90020;
double r90031 = r90011 * r90011;
double r90032 = r90020 * r90015;
double r90033 = r90031 - r90032;
double r90034 = sqrt(r90033);
double r90035 = r90034 / r90020;
double r90036 = r90030 - r90035;
double r90037 = 0.5;
double r90038 = r90011 / r90020;
double r90039 = -2.0;
double r90040 = r90038 * r90039;
double r90041 = fma(r90016, r90037, r90040);
double r90042 = r90028 ? r90036 : r90041;
double r90043 = r90019 ? r90026 : r90042;
double r90044 = r90013 ? r90017 : r90043;
return r90044;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < -3.7277239731487426e+105Initial program 59.9
Taylor expanded around -inf 2.4
if -3.7277239731487426e+105 < b_2 < 1.3645292833571162e-246Initial program 30.7
rmApplied flip--30.8
Simplified15.7
Simplified15.7
rmApplied *-un-lft-identity15.7
Applied *-un-lft-identity15.7
Applied *-un-lft-identity15.7
Applied times-frac15.7
Applied times-frac15.7
Simplified15.7
Simplified8.5
if 1.3645292833571162e-246 < b_2 < 4.19865099347443e+74Initial program 9.3
rmApplied div-sub9.3
if 4.19865099347443e+74 < b_2 Initial program 41.8
rmApplied flip--62.1
Simplified61.3
Simplified61.3
rmApplied *-un-lft-identity61.3
Applied *-un-lft-identity61.3
Applied *-un-lft-identity61.3
Applied times-frac61.3
Applied times-frac61.3
Simplified61.3
Simplified61.1
rmApplied clear-num61.1
Taylor expanded around inf 5.3
Simplified5.3
Final simplification6.8
herbie shell --seed 2019322 +o rules:numerics
(FPCore (a b_2 c)
:name "NMSE problem 3.2.1"
:precision binary64
(/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))