\begin{array}{l}
\mathbf{if}\;b \ge 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 -2.903275193909624 \cdot 10^{+131}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \left(\frac{2 \cdot a}{\frac{b}{c}} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.16763517725026 \cdot 10^{+102}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right|}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - \frac{2 \cdot a}{\frac{b}{c}}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r500220 = b;
double r500221 = 0.0;
bool r500222 = r500220 >= r500221;
double r500223 = -r500220;
double r500224 = r500220 * r500220;
double r500225 = 4.0;
double r500226 = a;
double r500227 = r500225 * r500226;
double r500228 = c;
double r500229 = r500227 * r500228;
double r500230 = r500224 - r500229;
double r500231 = sqrt(r500230);
double r500232 = r500223 - r500231;
double r500233 = 2.0;
double r500234 = r500233 * r500226;
double r500235 = r500232 / r500234;
double r500236 = r500233 * r500228;
double r500237 = r500223 + r500231;
double r500238 = r500236 / r500237;
double r500239 = r500222 ? r500235 : r500238;
return r500239;
}
double f(double a, double b, double c) {
double r500240 = b;
double r500241 = -2.903275193909624e+131;
bool r500242 = r500240 <= r500241;
double r500243 = 0.0;
bool r500244 = r500240 >= r500243;
double r500245 = -r500240;
double r500246 = r500240 * r500240;
double r500247 = 4.0;
double r500248 = a;
double r500249 = r500247 * r500248;
double r500250 = c;
double r500251 = r500249 * r500250;
double r500252 = r500246 - r500251;
double r500253 = sqrt(r500252);
double r500254 = r500245 - r500253;
double r500255 = 2.0;
double r500256 = r500255 * r500248;
double r500257 = r500254 / r500256;
double r500258 = r500250 * r500255;
double r500259 = r500240 / r500250;
double r500260 = r500256 / r500259;
double r500261 = r500260 - r500240;
double r500262 = r500245 + r500261;
double r500263 = r500258 / r500262;
double r500264 = r500244 ? r500257 : r500263;
double r500265 = 1.16763517725026e+102;
bool r500266 = r500240 <= r500265;
double r500267 = cbrt(r500252);
double r500268 = sqrt(r500267);
double r500269 = fabs(r500267);
double r500270 = r500268 * r500269;
double r500271 = r500245 - r500270;
double r500272 = r500271 / r500256;
double r500273 = r500253 + r500245;
double r500274 = r500258 / r500273;
double r500275 = r500244 ? r500272 : r500274;
double r500276 = r500240 - r500260;
double r500277 = r500245 - r500276;
double r500278 = r500277 / r500256;
double r500279 = r500244 ? r500278 : r500274;
double r500280 = r500266 ? r500275 : r500279;
double r500281 = r500242 ? r500264 : r500280;
return r500281;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.903275193909624e+131Initial program 33.4
Taylor expanded around -inf 5.9
Simplified1.8
if -2.903275193909624e+131 < b < 1.16763517725026e+102Initial program 8.7
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Simplified8.9
if 1.16763517725026e+102 < b Initial program 44.1
Taylor expanded around inf 9.5
Simplified3.8
Final simplification6.7
herbie shell --seed 2019154
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))