\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 -5.2389466313579672 \cdot 10^{127}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 7.17047858644702483 \cdot 10^{-264}:\\
\;\;\;\;{\left(\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\right)}^{1}\\
\mathbf{elif}\;b \le 3.7711811459025421 \cdot 10^{84}:\\
\;\;\;\;\frac{\frac{1}{0.5} \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r53067 = b;
double r53068 = -r53067;
double r53069 = r53067 * r53067;
double r53070 = 4.0;
double r53071 = a;
double r53072 = r53070 * r53071;
double r53073 = c;
double r53074 = r53072 * r53073;
double r53075 = r53069 - r53074;
double r53076 = sqrt(r53075);
double r53077 = r53068 + r53076;
double r53078 = 2.0;
double r53079 = r53078 * r53071;
double r53080 = r53077 / r53079;
return r53080;
}
double f(double a, double b, double c) {
double r53081 = b;
double r53082 = -5.238946631357967e+127;
bool r53083 = r53081 <= r53082;
double r53084 = 1.0;
double r53085 = c;
double r53086 = r53085 / r53081;
double r53087 = a;
double r53088 = r53081 / r53087;
double r53089 = r53086 - r53088;
double r53090 = r53084 * r53089;
double r53091 = 7.170478586447025e-264;
bool r53092 = r53081 <= r53091;
double r53093 = -r53081;
double r53094 = r53081 * r53081;
double r53095 = 4.0;
double r53096 = r53095 * r53087;
double r53097 = r53096 * r53085;
double r53098 = r53094 - r53097;
double r53099 = sqrt(r53098);
double r53100 = r53093 + r53099;
double r53101 = 2.0;
double r53102 = r53101 * r53087;
double r53103 = r53100 / r53102;
double r53104 = 1.0;
double r53105 = pow(r53103, r53104);
double r53106 = 3.771181145902542e+84;
bool r53107 = r53081 <= r53106;
double r53108 = 0.5;
double r53109 = r53104 / r53108;
double r53110 = r53109 * r53085;
double r53111 = r53093 - r53099;
double r53112 = r53110 / r53111;
double r53113 = -1.0;
double r53114 = r53113 * r53086;
double r53115 = r53107 ? r53112 : r53114;
double r53116 = r53092 ? r53105 : r53115;
double r53117 = r53083 ? r53090 : r53116;
return r53117;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.238946631357967e+127Initial program 54.2
Taylor expanded around -inf 3.3
Simplified3.3
if -5.238946631357967e+127 < b < 7.170478586447025e-264Initial program 8.9
rmApplied pow18.9
if 7.170478586447025e-264 < b < 3.771181145902542e+84Initial program 34.0
rmApplied flip-+34.1
Simplified16.5
rmApplied *-un-lft-identity16.5
Applied *-un-lft-identity16.5
Applied times-frac16.5
Applied associate-/l*16.7
Simplified16.1
Taylor expanded around 0 9.7
rmApplied associate-/r*9.4
Simplified9.4
if 3.771181145902542e+84 < b Initial program 58.6
Taylor expanded around inf 2.9
Final simplification6.7
herbie shell --seed 2020056 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))