\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le 4.1813913858897907 \cdot 10^{+68}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(-1, b, \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}} \cdot \left(-\sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}}\right)\right) + \mathsf{fma}\left(-\sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)} - b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r812595 = b;
double r812596 = 0.0;
bool r812597 = r812595 >= r812596;
double r812598 = 2.0;
double r812599 = c;
double r812600 = r812598 * r812599;
double r812601 = -r812595;
double r812602 = r812595 * r812595;
double r812603 = 4.0;
double r812604 = a;
double r812605 = r812603 * r812604;
double r812606 = r812605 * r812599;
double r812607 = r812602 - r812606;
double r812608 = sqrt(r812607);
double r812609 = r812601 - r812608;
double r812610 = r812600 / r812609;
double r812611 = r812601 + r812608;
double r812612 = r812598 * r812604;
double r812613 = r812611 / r812612;
double r812614 = r812597 ? r812610 : r812613;
return r812614;
}
double f(double a, double b, double c) {
double r812615 = b;
double r812616 = 4.1813913858897907e+68;
bool r812617 = r812615 <= r812616;
double r812618 = 0.0;
bool r812619 = r812615 >= r812618;
double r812620 = 2.0;
double r812621 = c;
double r812622 = r812620 * r812621;
double r812623 = -1.0;
double r812624 = -4.0;
double r812625 = a;
double r812626 = r812625 * r812621;
double r812627 = r812615 * r812615;
double r812628 = fma(r812624, r812626, r812627);
double r812629 = sqrt(r812628);
double r812630 = sqrt(r812629);
double r812631 = -r812630;
double r812632 = r812630 * r812631;
double r812633 = fma(r812623, r812615, r812632);
double r812634 = r812630 * r812630;
double r812635 = fma(r812631, r812630, r812634);
double r812636 = r812633 + r812635;
double r812637 = r812622 / r812636;
double r812638 = r812629 - r812615;
double r812639 = r812638 / r812620;
double r812640 = r812639 / r812625;
double r812641 = r812619 ? r812637 : r812640;
double r812642 = -r812615;
double r812643 = r812642 - r812615;
double r812644 = r812622 / r812643;
double r812645 = r812619 ? r812644 : r812640;
double r812646 = r812617 ? r812641 : r812645;
return r812646;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 4.1813913858897907e+68Initial program 16.3
Simplified16.3
rmApplied add-sqr-sqrt16.3
Applied sqrt-prod16.4
Applied neg-mul-116.4
Applied prod-diff16.4
if 4.1813913858897907e+68 < b Initial program 26.4
Simplified26.4
Taylor expanded around 0 3.5
Final simplification13.1
herbie shell --seed 2019152 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))