\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 -7.0212080290709876 \cdot 10^{145}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.2199100360588728 \cdot 10^{112}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot c\right) \cdot \frac{1}{\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 r25594 = b;
double r25595 = 0.0;
bool r25596 = r25594 >= r25595;
double r25597 = -r25594;
double r25598 = r25594 * r25594;
double r25599 = 4.0;
double r25600 = a;
double r25601 = r25599 * r25600;
double r25602 = c;
double r25603 = r25601 * r25602;
double r25604 = r25598 - r25603;
double r25605 = sqrt(r25604);
double r25606 = r25597 - r25605;
double r25607 = 2.0;
double r25608 = r25607 * r25600;
double r25609 = r25606 / r25608;
double r25610 = r25607 * r25602;
double r25611 = r25597 + r25605;
double r25612 = r25610 / r25611;
double r25613 = r25596 ? r25609 : r25612;
return r25613;
}
double f(double a, double b, double c) {
double r25614 = b;
double r25615 = -7.021208029070988e+145;
bool r25616 = r25614 <= r25615;
double r25617 = 0.0;
bool r25618 = r25614 >= r25617;
double r25619 = 1.0;
double r25620 = c;
double r25621 = r25620 / r25614;
double r25622 = a;
double r25623 = r25614 / r25622;
double r25624 = r25621 - r25623;
double r25625 = r25619 * r25624;
double r25626 = 2.0;
double r25627 = r25626 * r25620;
double r25628 = -r25614;
double r25629 = r25622 * r25620;
double r25630 = r25629 / r25614;
double r25631 = r25626 * r25630;
double r25632 = r25631 - r25614;
double r25633 = r25628 + r25632;
double r25634 = r25627 / r25633;
double r25635 = r25618 ? r25625 : r25634;
double r25636 = 1.2199100360588728e+112;
bool r25637 = r25614 <= r25636;
double r25638 = r25614 * r25614;
double r25639 = 4.0;
double r25640 = r25639 * r25622;
double r25641 = r25640 * r25620;
double r25642 = r25638 - r25641;
double r25643 = sqrt(r25642);
double r25644 = r25628 - r25643;
double r25645 = r25626 * r25622;
double r25646 = r25644 / r25645;
double r25647 = sqrt(r25643);
double r25648 = r25647 * r25647;
double r25649 = r25628 + r25648;
double r25650 = r25627 / r25649;
double r25651 = r25618 ? r25646 : r25650;
double r25652 = 1.0;
double r25653 = r25628 + r25643;
double r25654 = r25652 / r25653;
double r25655 = r25627 * r25654;
double r25656 = r25618 ? r25625 : r25655;
double r25657 = r25637 ? r25651 : r25656;
double r25658 = r25616 ? r25635 : r25657;
return r25658;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.021208029070988e+145Initial program 37.4
Taylor expanded around inf 37.4
Taylor expanded around 0 37.4
Simplified37.4
Taylor expanded around -inf 7.0
if -7.021208029070988e+145 < b < 1.2199100360588728e+112Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 1.2199100360588728e+112 < b Initial program 50.4
Taylor expanded around inf 10.5
Taylor expanded around 0 3.1
Simplified3.1
rmApplied div-inv3.1
Final simplification7.5
herbie shell --seed 2020081
(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)))))))