\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.328348355692401367625700175591396004283 \cdot 10^{154}:\\
\;\;\;\;\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{\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, -2 \cdot b\right)}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.868509219971100725776522881137913609515 \cdot 10^{90}:\\
\;\;\;\;\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{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\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}} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r31250 = b;
double r31251 = 0.0;
bool r31252 = r31250 >= r31251;
double r31253 = 2.0;
double r31254 = c;
double r31255 = r31253 * r31254;
double r31256 = -r31250;
double r31257 = r31250 * r31250;
double r31258 = 4.0;
double r31259 = a;
double r31260 = r31258 * r31259;
double r31261 = r31260 * r31254;
double r31262 = r31257 - r31261;
double r31263 = sqrt(r31262);
double r31264 = r31256 - r31263;
double r31265 = r31255 / r31264;
double r31266 = r31256 + r31263;
double r31267 = r31253 * r31259;
double r31268 = r31266 / r31267;
double r31269 = r31252 ? r31265 : r31268;
return r31269;
}
double f(double a, double b, double c) {
double r31270 = b;
double r31271 = -1.3283483556924014e+154;
bool r31272 = r31270 <= r31271;
double r31273 = 0.0;
bool r31274 = r31270 >= r31273;
double r31275 = 2.0;
double r31276 = c;
double r31277 = r31275 * r31276;
double r31278 = -r31270;
double r31279 = r31270 * r31270;
double r31280 = 4.0;
double r31281 = a;
double r31282 = r31280 * r31281;
double r31283 = r31282 * r31276;
double r31284 = r31279 - r31283;
double r31285 = sqrt(r31284);
double r31286 = r31278 - r31285;
double r31287 = r31277 / r31286;
double r31288 = r31281 * r31276;
double r31289 = r31288 / r31270;
double r31290 = -2.0;
double r31291 = r31290 * r31270;
double r31292 = fma(r31289, r31275, r31291);
double r31293 = r31292 / r31275;
double r31294 = r31293 / r31281;
double r31295 = r31274 ? r31287 : r31294;
double r31296 = 1.8685092199711007e+90;
bool r31297 = r31270 <= r31296;
double r31298 = sqrt(r31285);
double r31299 = r31298 * r31298;
double r31300 = r31278 - r31299;
double r31301 = r31277 / r31300;
double r31302 = r31285 - r31270;
double r31303 = r31302 / r31275;
double r31304 = r31303 / r31281;
double r31305 = r31274 ? r31301 : r31304;
double r31306 = r31275 * r31289;
double r31307 = r31270 - r31306;
double r31308 = r31278 - r31307;
double r31309 = r31277 / r31308;
double r31310 = r31299 - r31270;
double r31311 = r31310 / r31275;
double r31312 = r31311 / r31281;
double r31313 = r31274 ? r31309 : r31312;
double r31314 = r31297 ? r31305 : r31313;
double r31315 = r31272 ? r31295 : r31314;
return r31315;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3283483556924014e+154Initial program 64.0
Simplified64.0
rmApplied add-sqr-sqrt64.0
Applied sqrt-prod64.0
Taylor expanded around -inf 11.9
Simplified11.9
if -1.3283483556924014e+154 < b < 1.8685092199711007e+90Initial program 8.7
Simplified8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.8
if 1.8685092199711007e+90 < b Initial program 28.8
Simplified28.8
rmApplied add-sqr-sqrt28.8
Applied sqrt-prod28.8
Taylor expanded around inf 6.5
Final simplification8.6
herbie shell --seed 2019347 +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))))