\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 -1.6257289292067596 \cdot 10^{+144}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 1.739098950628615 \cdot 10^{-79}:\\
\;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} - b}}}{2}\\
\mathbf{elif}\;b \le 1.8656332031849816 \cdot 10^{-25}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\mathbf{elif}\;b \le 5.297236684235463 \cdot 10^{-16}:\\
\;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} \cdot \sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4} - b \cdot b}} \cdot \frac{1}{b + \sqrt{b \cdot b + \left(a \cdot c\right) \cdot -4}}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r948023 = b;
double r948024 = -r948023;
double r948025 = r948023 * r948023;
double r948026 = 4.0;
double r948027 = a;
double r948028 = r948026 * r948027;
double r948029 = c;
double r948030 = r948028 * r948029;
double r948031 = r948025 - r948030;
double r948032 = sqrt(r948031);
double r948033 = r948024 + r948032;
double r948034 = 2.0;
double r948035 = r948034 * r948027;
double r948036 = r948033 / r948035;
return r948036;
}
double f(double a, double b, double c) {
double r948037 = b;
double r948038 = -1.6257289292067596e+144;
bool r948039 = r948037 <= r948038;
double r948040 = c;
double r948041 = r948040 / r948037;
double r948042 = a;
double r948043 = r948037 / r948042;
double r948044 = r948041 - r948043;
double r948045 = 2.0;
double r948046 = r948044 * r948045;
double r948047 = r948046 / r948045;
double r948048 = 1.739098950628615e-79;
bool r948049 = r948037 <= r948048;
double r948050 = 1.0;
double r948051 = r948037 * r948037;
double r948052 = r948042 * r948040;
double r948053 = -4.0;
double r948054 = r948052 * r948053;
double r948055 = r948051 + r948054;
double r948056 = sqrt(r948055);
double r948057 = r948056 - r948037;
double r948058 = r948042 / r948057;
double r948059 = r948050 / r948058;
double r948060 = r948059 / r948045;
double r948061 = 1.8656332031849816e-25;
bool r948062 = r948037 <= r948061;
double r948063 = -2.0;
double r948064 = r948063 * r948041;
double r948065 = r948064 / r948045;
double r948066 = 5.297236684235463e-16;
bool r948067 = r948037 <= r948066;
double r948068 = r948056 * r948056;
double r948069 = r948068 - r948051;
double r948070 = r948042 / r948069;
double r948071 = r948050 / r948070;
double r948072 = r948037 + r948056;
double r948073 = r948050 / r948072;
double r948074 = r948071 * r948073;
double r948075 = r948074 / r948045;
double r948076 = r948067 ? r948075 : r948065;
double r948077 = r948062 ? r948065 : r948076;
double r948078 = r948049 ? r948060 : r948077;
double r948079 = r948039 ? r948047 : r948078;
return r948079;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.6257289292067596e+144Initial program 58.0
Simplified58.0
Taylor expanded around -inf 2.5
Simplified2.5
if -1.6257289292067596e+144 < b < 1.739098950628615e-79Initial program 11.7
Simplified11.8
rmApplied clear-num11.9
rmApplied clear-num11.9
Simplified11.9
if 1.739098950628615e-79 < b < 1.8656332031849816e-25 or 5.297236684235463e-16 < b Initial program 53.2
Simplified53.2
Taylor expanded around inf 8.2
if 1.8656332031849816e-25 < b < 5.297236684235463e-16Initial program 42.7
Simplified42.7
rmApplied clear-num42.8
rmApplied clear-num42.8
Simplified42.8
rmApplied flip--42.9
Applied associate-/r/42.9
Applied *-un-lft-identity42.9
Applied times-frac42.9
Final simplification9.7
herbie shell --seed 2019156
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))