\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.555632367828988861043913196266489993904 \cdot 10^{101}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -1.588581026022229142935221773282266391902 \cdot 10^{-168}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{{b}^{2} - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{elif}\;b \le 87537227540251800037021545535125898395650:\\
\;\;\;\;\frac{\frac{\frac{4}{\frac{1}{c}}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r46908 = b;
double r46909 = -r46908;
double r46910 = r46908 * r46908;
double r46911 = 4.0;
double r46912 = a;
double r46913 = r46911 * r46912;
double r46914 = c;
double r46915 = r46913 * r46914;
double r46916 = r46910 - r46915;
double r46917 = sqrt(r46916);
double r46918 = r46909 + r46917;
double r46919 = 2.0;
double r46920 = r46919 * r46912;
double r46921 = r46918 / r46920;
return r46921;
}
double f(double a, double b, double c) {
double r46922 = b;
double r46923 = -1.555632367828989e+101;
bool r46924 = r46922 <= r46923;
double r46925 = 1.0;
double r46926 = c;
double r46927 = r46926 / r46922;
double r46928 = a;
double r46929 = r46922 / r46928;
double r46930 = r46927 - r46929;
double r46931 = r46925 * r46930;
double r46932 = -1.5885810260222291e-168;
bool r46933 = r46922 <= r46932;
double r46934 = -r46922;
double r46935 = 2.0;
double r46936 = pow(r46922, r46935);
double r46937 = 4.0;
double r46938 = r46928 * r46926;
double r46939 = r46937 * r46938;
double r46940 = r46936 - r46939;
double r46941 = sqrt(r46940);
double r46942 = r46934 + r46941;
double r46943 = 2.0;
double r46944 = r46943 * r46928;
double r46945 = r46942 / r46944;
double r46946 = 8.75372275402518e+40;
bool r46947 = r46922 <= r46946;
double r46948 = 1.0;
double r46949 = r46948 / r46926;
double r46950 = r46937 / r46949;
double r46951 = r46922 * r46922;
double r46952 = r46937 * r46928;
double r46953 = r46952 * r46926;
double r46954 = r46951 - r46953;
double r46955 = sqrt(r46954);
double r46956 = r46934 - r46955;
double r46957 = r46950 / r46956;
double r46958 = r46957 / r46943;
double r46959 = -1.0;
double r46960 = r46959 * r46927;
double r46961 = r46947 ? r46958 : r46960;
double r46962 = r46933 ? r46945 : r46961;
double r46963 = r46924 ? r46931 : r46962;
return r46963;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.555632367828989e+101Initial program 47.4
Taylor expanded around -inf 3.6
Simplified3.6
if -1.555632367828989e+101 < b < -1.5885810260222291e-168Initial program 7.2
Taylor expanded around 0 7.2
if -1.5885810260222291e-168 < b < 8.75372275402518e+40Initial program 25.8
rmApplied flip-+26.0
Simplified16.9
rmApplied div-inv17.0
Applied times-frac23.1
Simplified23.1
rmApplied associate-*l/23.1
Simplified22.9
rmApplied associate-/r*16.8
Simplified11.6
if 8.75372275402518e+40 < b Initial program 56.7
Taylor expanded around inf 4.5
Final simplification7.4
herbie shell --seed 2019323 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))