\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 -4.204149651109244671037537951320463168697 \cdot 10^{105}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.112548483872930282376646755087531588032 \cdot 10^{99}:\\
\;\;\;\;\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:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}double f(double a, double b, double c) {
double r63635 = b;
double r63636 = 0.0;
bool r63637 = r63635 >= r63636;
double r63638 = -r63635;
double r63639 = r63635 * r63635;
double r63640 = 4.0;
double r63641 = a;
double r63642 = r63640 * r63641;
double r63643 = c;
double r63644 = r63642 * r63643;
double r63645 = r63639 - r63644;
double r63646 = sqrt(r63645);
double r63647 = r63638 - r63646;
double r63648 = 2.0;
double r63649 = r63648 * r63641;
double r63650 = r63647 / r63649;
double r63651 = r63648 * r63643;
double r63652 = r63638 + r63646;
double r63653 = r63651 / r63652;
double r63654 = r63637 ? r63650 : r63653;
return r63654;
}
double f(double a, double b, double c) {
double r63655 = b;
double r63656 = -4.2041496511092447e+105;
bool r63657 = r63655 <= r63656;
double r63658 = 0.0;
bool r63659 = r63655 >= r63658;
double r63660 = -r63655;
double r63661 = r63655 * r63655;
double r63662 = 4.0;
double r63663 = a;
double r63664 = r63662 * r63663;
double r63665 = c;
double r63666 = r63664 * r63665;
double r63667 = r63661 - r63666;
double r63668 = sqrt(r63667);
double r63669 = sqrt(r63668);
double r63670 = r63669 * r63669;
double r63671 = r63660 - r63670;
double r63672 = 2.0;
double r63673 = r63672 * r63663;
double r63674 = r63671 / r63673;
double r63675 = r63672 * r63665;
double r63676 = cbrt(r63655);
double r63677 = r63676 * r63676;
double r63678 = r63663 / r63677;
double r63679 = r63665 / r63676;
double r63680 = r63678 * r63679;
double r63681 = r63672 * r63680;
double r63682 = r63681 - r63655;
double r63683 = r63660 + r63682;
double r63684 = r63675 / r63683;
double r63685 = r63659 ? r63674 : r63684;
double r63686 = 1.1125484838729303e+99;
bool r63687 = r63655 <= r63686;
double r63688 = r63660 - r63668;
double r63689 = r63688 / r63673;
double r63690 = r63660 + r63670;
double r63691 = r63675 / r63690;
double r63692 = r63659 ? r63689 : r63691;
double r63693 = r63663 * r63665;
double r63694 = r63693 / r63655;
double r63695 = r63672 * r63694;
double r63696 = 2.0;
double r63697 = r63696 * r63655;
double r63698 = r63695 - r63697;
double r63699 = r63698 / r63673;
double r63700 = r63660 + r63668;
double r63701 = r63675 / r63700;
double r63702 = r63659 ? r63699 : r63701;
double r63703 = r63687 ? r63692 : r63702;
double r63704 = r63657 ? r63685 : r63703;
return r63704;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.2041496511092447e+105Initial program 29.9
Taylor expanded around -inf 6.9
rmApplied add-cube-cbrt6.9
Applied times-frac2.7
rmApplied add-sqr-sqrt2.7
Applied sqrt-prod2.7
if -4.2041496511092447e+105 < b < 1.1125484838729303e+99Initial program 9.2
rmApplied add-sqr-sqrt9.2
Applied sqrt-prod9.3
if 1.1125484838729303e+99 < b Initial program 47.2
Taylor expanded around inf 10.1
Final simplification7.9
herbie shell --seed 2019353 +o rules:numerics
(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)))))))