\begin{array}{l}
\mathbf{if}\;b \ge 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 -5.300564053552496 \cdot 10^{+135}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\frac{c}{\frac{b}{a}} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.019000267824195 \cdot 10^{+87}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right)} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \mathsf{fma}\left(-2, c \cdot \frac{a}{b}, b\right)}\\
\mathbf{else}:\\
\;\;\;\;\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}} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r903248 = b;
double r903249 = 0.0;
bool r903250 = r903248 >= r903249;
double r903251 = 2.0;
double r903252 = c;
double r903253 = r903251 * r903252;
double r903254 = -r903248;
double r903255 = r903248 * r903248;
double r903256 = 4.0;
double r903257 = a;
double r903258 = r903256 * r903257;
double r903259 = r903258 * r903252;
double r903260 = r903255 - r903259;
double r903261 = sqrt(r903260);
double r903262 = r903254 - r903261;
double r903263 = r903253 / r903262;
double r903264 = r903254 + r903261;
double r903265 = r903251 * r903257;
double r903266 = r903264 / r903265;
double r903267 = r903250 ? r903263 : r903266;
return r903267;
}
double f(double a, double b, double c) {
double r903268 = b;
double r903269 = -5.300564053552496e+135;
bool r903270 = r903268 <= r903269;
double r903271 = 0.0;
bool r903272 = r903268 >= r903271;
double r903273 = 2.0;
double r903274 = c;
double r903275 = r903273 * r903274;
double r903276 = -r903268;
double r903277 = r903268 * r903268;
double r903278 = 4.0;
double r903279 = a;
double r903280 = r903278 * r903279;
double r903281 = r903280 * r903274;
double r903282 = r903277 - r903281;
double r903283 = sqrt(r903282);
double r903284 = r903276 - r903283;
double r903285 = r903275 / r903284;
double r903286 = r903268 / r903279;
double r903287 = r903274 / r903286;
double r903288 = r903287 - r903268;
double r903289 = r903273 * r903288;
double r903290 = r903273 * r903279;
double r903291 = r903289 / r903290;
double r903292 = r903272 ? r903285 : r903291;
double r903293 = 2.019000267824195e+87;
bool r903294 = r903268 <= r903293;
double r903295 = cbrt(r903283);
double r903296 = r903295 * r903295;
double r903297 = r903295 * r903296;
double r903298 = sqrt(r903297);
double r903299 = sqrt(r903283);
double r903300 = r903298 * r903299;
double r903301 = r903300 + r903276;
double r903302 = r903301 / r903290;
double r903303 = r903272 ? r903285 : r903302;
double r903304 = -2.0;
double r903305 = r903279 / r903268;
double r903306 = r903274 * r903305;
double r903307 = fma(r903304, r903306, r903268);
double r903308 = r903276 - r903307;
double r903309 = r903275 / r903308;
double r903310 = r903299 * r903299;
double r903311 = r903310 + r903276;
double r903312 = r903311 / r903290;
double r903313 = r903272 ? r903309 : r903312;
double r903314 = r903294 ? r903303 : r903313;
double r903315 = r903270 ? r903292 : r903314;
return r903315;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.300564053552496e+135Initial program 54.9
Taylor expanded around -inf 9.2
Simplified2.6
if -5.300564053552496e+135 < b < 2.019000267824195e+87Initial program 9.3
rmApplied add-sqr-sqrt9.3
Applied sqrt-prod9.4
rmApplied add-cube-cbrt9.6
if 2.019000267824195e+87 < b Initial program 29.4
rmApplied add-sqr-sqrt29.4
Applied sqrt-prod29.4
Taylor expanded around inf 6.4
Simplified2.6
Final simplification7.0
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))