\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 -7.66098576995581 \cdot 10^{+153}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(\frac{a}{b} \cdot c - b\right) \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \le 6.431123294932864 \cdot 10^{+83}:\\
\;\;\;\;\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 \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\frac{\left(4 \cdot a\right) \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 r848425 = b;
double r848426 = 0.0;
bool r848427 = r848425 >= r848426;
double r848428 = -r848425;
double r848429 = r848425 * r848425;
double r848430 = 4.0;
double r848431 = a;
double r848432 = r848430 * r848431;
double r848433 = c;
double r848434 = r848432 * r848433;
double r848435 = r848429 - r848434;
double r848436 = sqrt(r848435);
double r848437 = r848428 - r848436;
double r848438 = 2.0;
double r848439 = r848438 * r848431;
double r848440 = r848437 / r848439;
double r848441 = r848438 * r848433;
double r848442 = r848428 + r848436;
double r848443 = r848441 / r848442;
double r848444 = r848427 ? r848440 : r848443;
return r848444;
}
double f(double a, double b, double c) {
double r848445 = b;
double r848446 = -7.66098576995581e+153;
bool r848447 = r848445 <= r848446;
double r848448 = 0.0;
bool r848449 = r848445 >= r848448;
double r848450 = c;
double r848451 = r848450 / r848445;
double r848452 = a;
double r848453 = r848445 / r848452;
double r848454 = r848451 - r848453;
double r848455 = 2.0;
double r848456 = r848450 * r848455;
double r848457 = r848452 / r848445;
double r848458 = r848457 * r848450;
double r848459 = r848458 - r848445;
double r848460 = r848459 * r848455;
double r848461 = r848456 / r848460;
double r848462 = r848449 ? r848454 : r848461;
double r848463 = 6.431123294932864e+83;
bool r848464 = r848445 <= r848463;
double r848465 = -r848445;
double r848466 = r848445 * r848445;
double r848467 = 4.0;
double r848468 = r848467 * r848452;
double r848469 = r848468 * r848450;
double r848470 = r848466 - r848469;
double r848471 = cbrt(r848470);
double r848472 = sqrt(r848471);
double r848473 = r848471 * r848471;
double r848474 = sqrt(r848473);
double r848475 = r848472 * r848474;
double r848476 = r848465 - r848475;
double r848477 = r848452 * r848455;
double r848478 = r848476 / r848477;
double r848479 = sqrt(r848470);
double r848480 = r848465 + r848479;
double r848481 = r848456 / r848480;
double r848482 = r848449 ? r848478 : r848481;
double r848483 = r848465 - r848479;
double r848484 = r848469 / r848483;
double r848485 = r848456 / r848484;
double r848486 = r848449 ? r848454 : r848485;
double r848487 = r848464 ? r848482 : r848486;
double r848488 = r848447 ? r848462 : r848487;
return r848488;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.66098576995581e+153Initial program 39.2
Taylor expanded around inf 39.2
Simplified39.2
Taylor expanded around 0 39.2
Taylor expanded around -inf 6.9
Simplified1.6
if -7.66098576995581e+153 < b < 6.431123294932864e+83Initial program 8.5
rmApplied add-cube-cbrt8.7
Applied sqrt-prod8.7
if 6.431123294932864e+83 < b Initial program 42.4
Taylor expanded around inf 9.9
Simplified4.3
Taylor expanded around 0 4.1
rmApplied flip-+4.1
Simplified4.1
Final simplification6.6
herbie shell --seed 2019142
(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)))))))