\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 -2.223763057046510327568967152287533282505 \cdot 10^{109}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -3.319380566438366601816459280349243307141 \cdot 10^{-186}:\\
\;\;\;\;\frac{\sqrt{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2} \cdot \frac{\sqrt{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{a}\\
\mathbf{elif}\;b \le 1.458057835821772074616178333218437979276 \cdot 10^{144}:\\
\;\;\;\;\frac{\frac{1}{\frac{2}{4}} \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 r61160 = b;
double r61161 = -r61160;
double r61162 = r61160 * r61160;
double r61163 = 4.0;
double r61164 = a;
double r61165 = r61163 * r61164;
double r61166 = c;
double r61167 = r61165 * r61166;
double r61168 = r61162 - r61167;
double r61169 = sqrt(r61168);
double r61170 = r61161 + r61169;
double r61171 = 2.0;
double r61172 = r61171 * r61164;
double r61173 = r61170 / r61172;
return r61173;
}
double f(double a, double b, double c) {
double r61174 = b;
double r61175 = -2.2237630570465103e+109;
bool r61176 = r61174 <= r61175;
double r61177 = 1.0;
double r61178 = c;
double r61179 = r61178 / r61174;
double r61180 = a;
double r61181 = r61174 / r61180;
double r61182 = r61179 - r61181;
double r61183 = r61177 * r61182;
double r61184 = -3.3193805664383666e-186;
bool r61185 = r61174 <= r61184;
double r61186 = -r61174;
double r61187 = r61174 * r61174;
double r61188 = 4.0;
double r61189 = r61188 * r61180;
double r61190 = r61189 * r61178;
double r61191 = r61187 - r61190;
double r61192 = sqrt(r61191);
double r61193 = r61186 + r61192;
double r61194 = sqrt(r61193);
double r61195 = 2.0;
double r61196 = r61194 / r61195;
double r61197 = r61194 / r61180;
double r61198 = r61196 * r61197;
double r61199 = 1.458057835821772e+144;
bool r61200 = r61174 <= r61199;
double r61201 = 1.0;
double r61202 = r61195 / r61188;
double r61203 = r61201 / r61202;
double r61204 = r61203 * r61178;
double r61205 = r61186 - r61192;
double r61206 = r61204 / r61205;
double r61207 = -1.0;
double r61208 = r61207 * r61179;
double r61209 = r61200 ? r61206 : r61208;
double r61210 = r61185 ? r61198 : r61209;
double r61211 = r61176 ? r61183 : r61210;
return r61211;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.2237630570465103e+109Initial program 48.6
Taylor expanded around -inf 3.3
Simplified3.3
if -2.2237630570465103e+109 < b < -3.3193805664383666e-186Initial program 6.9
rmApplied add-sqr-sqrt7.3
Applied times-frac7.3
if -3.3193805664383666e-186 < b < 1.458057835821772e+144Initial program 31.3
rmApplied flip-+31.5
Simplified16.1
rmApplied clear-num16.3
Simplified15.3
rmApplied times-frac15.3
Simplified10.2
rmApplied associate-/r*9.9
Simplified9.8
if 1.458057835821772e+144 < b Initial program 62.9
Taylor expanded around inf 1.5
Final simplification6.7
herbie shell --seed 2020001 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))