\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 -2.3202538172935113 \cdot 10^{68}:\\
\;\;\;\;\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(a \cdot \frac{c}{b}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.67086091268017442 \cdot 10^{125}:\\
\;\;\;\;\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{\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}}}\\
\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 r26665 = b;
double r26666 = 0.0;
bool r26667 = r26665 >= r26666;
double r26668 = -r26665;
double r26669 = r26665 * r26665;
double r26670 = 4.0;
double r26671 = a;
double r26672 = r26670 * r26671;
double r26673 = c;
double r26674 = r26672 * r26673;
double r26675 = r26669 - r26674;
double r26676 = sqrt(r26675);
double r26677 = r26668 - r26676;
double r26678 = 2.0;
double r26679 = r26678 * r26671;
double r26680 = r26677 / r26679;
double r26681 = r26678 * r26673;
double r26682 = r26668 + r26676;
double r26683 = r26681 / r26682;
double r26684 = r26667 ? r26680 : r26683;
return r26684;
}
double f(double a, double b, double c) {
double r26685 = b;
double r26686 = -2.3202538172935113e+68;
bool r26687 = r26685 <= r26686;
double r26688 = 0.0;
bool r26689 = r26685 >= r26688;
double r26690 = -r26685;
double r26691 = r26685 * r26685;
double r26692 = 4.0;
double r26693 = a;
double r26694 = r26692 * r26693;
double r26695 = c;
double r26696 = r26694 * r26695;
double r26697 = r26691 - r26696;
double r26698 = sqrt(r26697);
double r26699 = sqrt(r26698);
double r26700 = r26699 * r26699;
double r26701 = r26690 - r26700;
double r26702 = 2.0;
double r26703 = r26702 * r26693;
double r26704 = r26701 / r26703;
double r26705 = r26702 * r26695;
double r26706 = r26695 / r26685;
double r26707 = r26693 * r26706;
double r26708 = r26702 * r26707;
double r26709 = r26708 - r26685;
double r26710 = r26690 + r26709;
double r26711 = r26705 / r26710;
double r26712 = r26689 ? r26704 : r26711;
double r26713 = 3.6708609126801744e+125;
bool r26714 = r26685 <= r26713;
double r26715 = r26690 - r26698;
double r26716 = r26715 / r26703;
double r26717 = cbrt(r26697);
double r26718 = r26717 * r26717;
double r26719 = r26718 * r26717;
double r26720 = sqrt(r26719);
double r26721 = r26690 + r26720;
double r26722 = r26705 / r26721;
double r26723 = r26689 ? r26716 : r26722;
double r26724 = r26693 * r26695;
double r26725 = r26724 / r26685;
double r26726 = r26702 * r26725;
double r26727 = 2.0;
double r26728 = r26727 * r26685;
double r26729 = r26726 - r26728;
double r26730 = r26729 / r26703;
double r26731 = r26690 + r26698;
double r26732 = r26705 / r26731;
double r26733 = r26689 ? r26730 : r26732;
double r26734 = r26714 ? r26723 : r26733;
double r26735 = r26687 ? r26712 : r26734;
return r26735;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.3202538172935113e+68Initial program 26.1
rmApplied add-sqr-sqrt26.1
Applied sqrt-prod26.1
Taylor expanded around -inf 7.3
rmApplied *-un-lft-identity7.3
Applied times-frac3.6
Simplified3.6
if -2.3202538172935113e+68 < b < 3.6708609126801744e+125Initial program 9.2
rmApplied add-cube-cbrt9.4
if 3.6708609126801744e+125 < b Initial program 53.5
rmApplied add-sqr-sqrt53.5
Applied sqrt-prod53.6
Taylor expanded around inf 9.5
Final simplification7.9
herbie shell --seed 2020083 +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)))))))