\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -9.088000531423294 \cdot 10^{+152}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 9.354082991670835 \cdot 10^{-125}:\\
\;\;\;\;\frac{\left(\sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} - b\right) \cdot \frac{1}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-c}{b}\\
\end{array}double f(double a, double b, double c) {
double r724078 = b;
double r724079 = -r724078;
double r724080 = r724078 * r724078;
double r724081 = 4.0;
double r724082 = a;
double r724083 = r724081 * r724082;
double r724084 = c;
double r724085 = r724083 * r724084;
double r724086 = r724080 - r724085;
double r724087 = sqrt(r724086);
double r724088 = r724079 + r724087;
double r724089 = 2.0;
double r724090 = r724089 * r724082;
double r724091 = r724088 / r724090;
return r724091;
}
double f(double a, double b, double c) {
double r724092 = b;
double r724093 = -9.088000531423294e+152;
bool r724094 = r724092 <= r724093;
double r724095 = c;
double r724096 = r724095 / r724092;
double r724097 = a;
double r724098 = r724092 / r724097;
double r724099 = r724096 - r724098;
double r724100 = 9.354082991670835e-125;
bool r724101 = r724092 <= r724100;
double r724102 = -4.0;
double r724103 = r724097 * r724102;
double r724104 = r724092 * r724092;
double r724105 = fma(r724103, r724095, r724104);
double r724106 = sqrt(r724105);
double r724107 = r724106 - r724092;
double r724108 = 0.5;
double r724109 = r724107 * r724108;
double r724110 = r724109 / r724097;
double r724111 = -r724095;
double r724112 = r724111 / r724092;
double r724113 = r724101 ? r724110 : r724112;
double r724114 = r724094 ? r724099 : r724113;
return r724114;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -9.088000531423294e+152Initial program 60.4
Simplified60.4
Taylor expanded around -inf 1.5
if -9.088000531423294e+152 < b < 9.354082991670835e-125Initial program 10.9
Simplified10.9
rmApplied *-un-lft-identity10.9
Applied div-inv11.1
Applied times-frac11.1
Simplified11.1
Simplified11.1
rmApplied associate-*r/10.9
if 9.354082991670835e-125 < b Initial program 49.8
Simplified49.8
Taylor expanded around inf 11.9
Simplified11.9
Final simplification10.3
herbie shell --seed 2019153 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))