\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 -6.1701110130378705 \cdot 10^{+68}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 1.4352467544377554 \cdot 10^{-114}:\\
\;\;\;\;\frac{1}{\frac{a \cdot 2}{\sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}} - \frac{b}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1576202 = b;
double r1576203 = -r1576202;
double r1576204 = r1576202 * r1576202;
double r1576205 = 4.0;
double r1576206 = a;
double r1576207 = r1576205 * r1576206;
double r1576208 = c;
double r1576209 = r1576207 * r1576208;
double r1576210 = r1576204 - r1576209;
double r1576211 = sqrt(r1576210);
double r1576212 = r1576203 + r1576211;
double r1576213 = 2.0;
double r1576214 = r1576213 * r1576206;
double r1576215 = r1576212 / r1576214;
return r1576215;
}
double f(double a, double b, double c) {
double r1576216 = b;
double r1576217 = -6.1701110130378705e+68;
bool r1576218 = r1576216 <= r1576217;
double r1576219 = c;
double r1576220 = r1576219 / r1576216;
double r1576221 = a;
double r1576222 = r1576216 / r1576221;
double r1576223 = r1576220 - r1576222;
double r1576224 = 1.4352467544377554e-114;
bool r1576225 = r1576216 <= r1576224;
double r1576226 = 1.0;
double r1576227 = 2.0;
double r1576228 = r1576221 * r1576227;
double r1576229 = r1576216 * r1576216;
double r1576230 = 4.0;
double r1576231 = r1576219 * r1576221;
double r1576232 = r1576230 * r1576231;
double r1576233 = r1576229 - r1576232;
double r1576234 = sqrt(r1576233);
double r1576235 = r1576228 / r1576234;
double r1576236 = r1576226 / r1576235;
double r1576237 = r1576216 / r1576228;
double r1576238 = r1576236 - r1576237;
double r1576239 = -r1576220;
double r1576240 = r1576225 ? r1576238 : r1576239;
double r1576241 = r1576218 ? r1576223 : r1576240;
return r1576241;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -6.1701110130378705e+68Initial program 38.1
Simplified38.1
rmApplied div-sub38.1
rmApplied *-un-lft-identity38.1
Applied associate-/l*38.1
rmApplied add-sqr-sqrt38.2
Applied times-frac38.2
Applied *-un-lft-identity38.2
Applied times-frac38.2
Taylor expanded around -inf 4.7
if -6.1701110130378705e+68 < b < 1.4352467544377554e-114Initial program 12.0
Simplified12.0
rmApplied div-sub12.0
rmApplied *-un-lft-identity12.0
Applied associate-/l*12.1
if 1.4352467544377554e-114 < b Initial program 50.9
Simplified50.8
Taylor expanded around inf 11.5
Simplified11.5
Final simplification10.6
herbie shell --seed 2019133
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))