\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.56941706508999029 \cdot 10^{163}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.0963004586600293 \cdot 10^{99}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r31278 = b;
double r31279 = 0.0;
bool r31280 = r31278 >= r31279;
double r31281 = 2.0;
double r31282 = c;
double r31283 = r31281 * r31282;
double r31284 = -r31278;
double r31285 = r31278 * r31278;
double r31286 = 4.0;
double r31287 = a;
double r31288 = r31286 * r31287;
double r31289 = r31288 * r31282;
double r31290 = r31285 - r31289;
double r31291 = sqrt(r31290);
double r31292 = r31284 - r31291;
double r31293 = r31283 / r31292;
double r31294 = r31284 + r31291;
double r31295 = r31281 * r31287;
double r31296 = r31294 / r31295;
double r31297 = r31280 ? r31293 : r31296;
return r31297;
}
double f(double a, double b, double c) {
double r31298 = b;
double r31299 = -1.5694170650899903e+163;
bool r31300 = r31298 <= r31299;
double r31301 = 0.0;
bool r31302 = r31298 >= r31301;
double r31303 = 2.0;
double r31304 = c;
double r31305 = r31303 * r31304;
double r31306 = -r31298;
double r31307 = r31298 * r31298;
double r31308 = 4.0;
double r31309 = a;
double r31310 = r31308 * r31309;
double r31311 = r31310 * r31304;
double r31312 = r31307 - r31311;
double r31313 = sqrt(r31312);
double r31314 = r31306 - r31313;
double r31315 = r31305 / r31314;
double r31316 = r31309 * r31304;
double r31317 = r31316 / r31298;
double r31318 = r31303 * r31317;
double r31319 = r31318 - r31298;
double r31320 = r31306 + r31319;
double r31321 = r31303 * r31309;
double r31322 = r31320 / r31321;
double r31323 = r31302 ? r31315 : r31322;
double r31324 = 1.0963004586600293e+99;
bool r31325 = r31298 <= r31324;
double r31326 = sqrt(r31313);
double r31327 = r31326 * r31326;
double r31328 = r31306 - r31327;
double r31329 = r31305 / r31328;
double r31330 = r31306 + r31313;
double r31331 = r31330 / r31321;
double r31332 = r31302 ? r31329 : r31331;
double r31333 = 2.0;
double r31334 = r31333 * r31298;
double r31335 = r31318 - r31334;
double r31336 = r31305 / r31335;
double r31337 = r31302 ? r31336 : r31331;
double r31338 = r31325 ? r31332 : r31337;
double r31339 = r31300 ? r31323 : r31338;
return r31339;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5694170650899903e+163Initial program 64.0
Taylor expanded around -inf 12.9
if -1.5694170650899903e+163 < b < 1.0963004586600293e+99Initial program 9.5
rmApplied add-sqr-sqrt9.5
Applied sqrt-prod9.6
if 1.0963004586600293e+99 < b Initial program 28.8
Taylor expanded around inf 6.8
Final simplification9.2
herbie shell --seed 2020060 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))