\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 2.891777552454845 \cdot 10^{+74}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;2 \cdot \frac{c}{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4, \left(a \cdot c\right), \left(b \cdot b\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\sqrt{\mathsf{fma}\left(-4, \left(a \cdot c\right), \left(b \cdot b\right)\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(-4, \left(a \cdot c\right), \left(b \cdot b\right)\right)}} - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;2 \cdot \frac{c}{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\mathsf{fma}\left(-4, \left(a \cdot c\right), \left(b \cdot b\right)\right)} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r697589 = b;
double r697590 = 0.0;
bool r697591 = r697589 >= r697590;
double r697592 = 2.0;
double r697593 = c;
double r697594 = r697592 * r697593;
double r697595 = -r697589;
double r697596 = r697589 * r697589;
double r697597 = 4.0;
double r697598 = a;
double r697599 = r697597 * r697598;
double r697600 = r697599 * r697593;
double r697601 = r697596 - r697600;
double r697602 = sqrt(r697601);
double r697603 = r697595 - r697602;
double r697604 = r697594 / r697603;
double r697605 = r697595 + r697602;
double r697606 = r697592 * r697598;
double r697607 = r697605 / r697606;
double r697608 = r697591 ? r697604 : r697607;
return r697608;
}
double f(double a, double b, double c) {
double r697609 = b;
double r697610 = 2.891777552454845e+74;
bool r697611 = r697609 <= r697610;
double r697612 = 0.0;
bool r697613 = r697609 >= r697612;
double r697614 = 2.0;
double r697615 = c;
double r697616 = -r697609;
double r697617 = -4.0;
double r697618 = a;
double r697619 = r697618 * r697615;
double r697620 = r697609 * r697609;
double r697621 = fma(r697617, r697619, r697620);
double r697622 = sqrt(r697621);
double r697623 = r697616 - r697622;
double r697624 = r697615 / r697623;
double r697625 = r697614 * r697624;
double r697626 = sqrt(r697622);
double r697627 = r697626 * r697626;
double r697628 = r697627 - r697609;
double r697629 = r697614 * r697618;
double r697630 = r697628 / r697629;
double r697631 = r697613 ? r697625 : r697630;
double r697632 = r697618 / r697609;
double r697633 = r697632 * r697615;
double r697634 = r697633 - r697609;
double r697635 = r697614 * r697634;
double r697636 = r697615 / r697635;
double r697637 = r697614 * r697636;
double r697638 = r697622 - r697609;
double r697639 = r697638 / r697629;
double r697640 = r697613 ? r697637 : r697639;
double r697641 = r697611 ? r697631 : r697640;
return r697641;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2.891777552454845e+74Initial program 16.8
Simplified16.8
rmApplied add-sqr-sqrt16.9
if 2.891777552454845e+74 < b Initial program 27.2
Simplified27.2
Taylor expanded around inf 6.7
Simplified2.9
Final simplification13.1
herbie shell --seed 2019130 +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))))