\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -3.688468976067862917923558349816908192872 \cdot 10^{161}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.822077811116170988501030000586664884528 \cdot 10^{78}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r43228 = b;
double r43229 = 0.0;
bool r43230 = r43228 >= r43229;
double r43231 = -r43228;
double r43232 = r43228 * r43228;
double r43233 = 4.0;
double r43234 = a;
double r43235 = r43233 * r43234;
double r43236 = c;
double r43237 = r43235 * r43236;
double r43238 = r43232 - r43237;
double r43239 = sqrt(r43238);
double r43240 = r43231 - r43239;
double r43241 = 2.0;
double r43242 = r43241 * r43234;
double r43243 = r43240 / r43242;
double r43244 = r43241 * r43236;
double r43245 = r43231 + r43239;
double r43246 = r43244 / r43245;
double r43247 = r43230 ? r43243 : r43246;
return r43247;
}
double f(double a, double b, double c) {
double r43248 = b;
double r43249 = -3.688468976067863e+161;
bool r43250 = r43248 <= r43249;
double r43251 = 0.0;
bool r43252 = r43248 >= r43251;
double r43253 = -r43248;
double r43254 = r43248 * r43248;
double r43255 = 4.0;
double r43256 = a;
double r43257 = r43255 * r43256;
double r43258 = c;
double r43259 = r43257 * r43258;
double r43260 = r43254 - r43259;
double r43261 = sqrt(r43260);
double r43262 = r43253 - r43261;
double r43263 = 2.0;
double r43264 = r43263 * r43256;
double r43265 = r43262 / r43264;
double r43266 = r43263 * r43258;
double r43267 = r43256 * r43258;
double r43268 = r43267 / r43248;
double r43269 = r43263 * r43268;
double r43270 = r43269 - r43248;
double r43271 = r43253 + r43270;
double r43272 = r43266 / r43271;
double r43273 = r43252 ? r43265 : r43272;
double r43274 = 1.822077811116171e+78;
bool r43275 = r43248 <= r43274;
double r43276 = sqrt(r43261);
double r43277 = r43276 * r43276;
double r43278 = r43253 - r43277;
double r43279 = r43278 / r43264;
double r43280 = r43253 + r43261;
double r43281 = r43266 / r43280;
double r43282 = r43252 ? r43279 : r43281;
double r43283 = r43248 - r43269;
double r43284 = r43253 - r43283;
double r43285 = r43284 / r43264;
double r43286 = r43252 ? r43285 : r43281;
double r43287 = r43275 ? r43282 : r43286;
double r43288 = r43250 ? r43273 : r43287;
return r43288;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.688468976067863e+161Initial program 39.1
Taylor expanded around -inf 7.5
if -3.688468976067863e+161 < b < 1.822077811116171e+78Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
if 1.822077811116171e+78 < b Initial program 43.0
Taylor expanded around inf 11.2
Final simplification9.1
herbie shell --seed 2019303
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))