\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 -5.791348048249166002460683130439961414293 \cdot 10^{138}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(2, \frac{a \cdot c}{b}, -2 \cdot b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(2, \frac{a \cdot c}{b}, -2 \cdot b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.482832280613327405571569362927236109326 \cdot 10^{130}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{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{\mathsf{fma}\left(2, \frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}, -2 \cdot 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 r1318277 = b;
double r1318278 = 0.0;
bool r1318279 = r1318277 >= r1318278;
double r1318280 = -r1318277;
double r1318281 = r1318277 * r1318277;
double r1318282 = 4.0;
double r1318283 = a;
double r1318284 = r1318282 * r1318283;
double r1318285 = c;
double r1318286 = r1318284 * r1318285;
double r1318287 = r1318281 - r1318286;
double r1318288 = sqrt(r1318287);
double r1318289 = r1318280 - r1318288;
double r1318290 = 2.0;
double r1318291 = r1318290 * r1318283;
double r1318292 = r1318289 / r1318291;
double r1318293 = r1318290 * r1318285;
double r1318294 = r1318280 + r1318288;
double r1318295 = r1318293 / r1318294;
double r1318296 = r1318279 ? r1318292 : r1318295;
return r1318296;
}
double f(double a, double b, double c) {
double r1318297 = b;
double r1318298 = -5.791348048249166e+138;
bool r1318299 = r1318297 <= r1318298;
double r1318300 = 0.0;
bool r1318301 = r1318297 >= r1318300;
double r1318302 = 2.0;
double r1318303 = a;
double r1318304 = c;
double r1318305 = r1318303 * r1318304;
double r1318306 = r1318305 / r1318297;
double r1318307 = -2.0;
double r1318308 = r1318307 * r1318297;
double r1318309 = fma(r1318302, r1318306, r1318308);
double r1318310 = r1318302 * r1318303;
double r1318311 = r1318309 / r1318310;
double r1318312 = r1318302 * r1318304;
double r1318313 = r1318312 / r1318309;
double r1318314 = r1318301 ? r1318311 : r1318313;
double r1318315 = 1.4828322806133274e+130;
bool r1318316 = r1318297 <= r1318315;
double r1318317 = -r1318297;
double r1318318 = r1318297 * r1318297;
double r1318319 = 4.0;
double r1318320 = r1318319 * r1318303;
double r1318321 = r1318320 * r1318304;
double r1318322 = r1318318 - r1318321;
double r1318323 = cbrt(r1318322);
double r1318324 = fabs(r1318323);
double r1318325 = sqrt(r1318323);
double r1318326 = r1318324 * r1318325;
double r1318327 = r1318317 - r1318326;
double r1318328 = r1318327 / r1318310;
double r1318329 = sqrt(r1318322);
double r1318330 = r1318317 + r1318329;
double r1318331 = r1318312 / r1318330;
double r1318332 = r1318301 ? r1318328 : r1318331;
double r1318333 = sqrt(r1318297);
double r1318334 = r1318303 / r1318333;
double r1318335 = r1318304 / r1318333;
double r1318336 = r1318334 * r1318335;
double r1318337 = fma(r1318302, r1318336, r1318308);
double r1318338 = r1318337 / r1318310;
double r1318339 = r1318301 ? r1318338 : r1318331;
double r1318340 = r1318316 ? r1318332 : r1318339;
double r1318341 = r1318299 ? r1318314 : r1318340;
return r1318341;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.791348048249166e+138Initial program 35.0
Taylor expanded around inf 35.0
Simplified35.0
Taylor expanded around -inf 5.8
Simplified5.8
if -5.791348048249166e+138 < b < 1.4828322806133274e+130Initial program 8.1
rmApplied add-cube-cbrt8.3
Applied sqrt-prod8.3
Simplified8.3
if 1.4828322806133274e+130 < b Initial program 56.1
Taylor expanded around inf 10.4
Simplified10.4
rmApplied add-sqr-sqrt10.4
Applied times-frac2.6
Final simplification7.0
herbie shell --seed 2019174 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))