\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 -1.359648585223011851077522396013723801172 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) - b}\\
\end{array}\\
\mathbf{elif}\;b \le 2.125563079851438727208684227808951636731 \cdot 10^{135}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\left(\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}\right) \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}double f(double a, double b, double c) {
double r32608 = b;
double r32609 = 0.0;
bool r32610 = r32608 >= r32609;
double r32611 = -r32608;
double r32612 = r32608 * r32608;
double r32613 = 4.0;
double r32614 = a;
double r32615 = r32613 * r32614;
double r32616 = c;
double r32617 = r32615 * r32616;
double r32618 = r32612 - r32617;
double r32619 = sqrt(r32618);
double r32620 = r32611 - r32619;
double r32621 = 2.0;
double r32622 = r32621 * r32614;
double r32623 = r32620 / r32622;
double r32624 = r32621 * r32616;
double r32625 = r32611 + r32619;
double r32626 = r32624 / r32625;
double r32627 = r32610 ? r32623 : r32626;
return r32627;
}
double f(double a, double b, double c) {
double r32628 = b;
double r32629 = -1.3596485852230119e+154;
bool r32630 = r32628 <= r32629;
double r32631 = 0.0;
bool r32632 = r32628 >= r32631;
double r32633 = -r32628;
double r32634 = r32628 * r32628;
double r32635 = 4.0;
double r32636 = a;
double r32637 = r32635 * r32636;
double r32638 = c;
double r32639 = r32637 * r32638;
double r32640 = r32634 - r32639;
double r32641 = sqrt(r32640);
double r32642 = r32633 - r32641;
double r32643 = 2.0;
double r32644 = r32643 * r32636;
double r32645 = r32642 / r32644;
double r32646 = r32643 * r32638;
double r32647 = r32636 * r32638;
double r32648 = r32647 / r32628;
double r32649 = r32643 * r32648;
double r32650 = r32649 - r32628;
double r32651 = r32650 - r32628;
double r32652 = r32646 / r32651;
double r32653 = r32632 ? r32645 : r32652;
double r32654 = 2.1255630798514387e+135;
bool r32655 = r32628 <= r32654;
double r32656 = cbrt(r32640);
double r32657 = r32656 * r32656;
double r32658 = r32657 * r32656;
double r32659 = sqrt(r32658);
double r32660 = r32633 - r32659;
double r32661 = r32660 / r32644;
double r32662 = r32641 - r32628;
double r32663 = r32646 / r32662;
double r32664 = r32632 ? r32661 : r32663;
double r32665 = r32628 - r32649;
double r32666 = r32633 - r32665;
double r32667 = r32666 / r32644;
double r32668 = r32632 ? r32667 : r32663;
double r32669 = r32655 ? r32664 : r32668;
double r32670 = r32630 ? r32653 : r32669;
return r32670;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3596485852230119e+154Initial program 38.5
Simplified38.5
Taylor expanded around -inf 5.3
if -1.3596485852230119e+154 < b < 2.1255630798514387e+135Initial program 8.6
Simplified8.6
rmApplied add-cube-cbrt8.9
if 2.1255630798514387e+135 < b Initial program 58.2
Simplified58.2
Taylor expanded around inf 11.8
Final simplification8.6
herbie shell --seed 2019306
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))