\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.82289647433212 \cdot 10^{+153}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{a}{\frac{b}{c}} - b\right) \cdot 2}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \le 4.866803345215698 \cdot 10^{+83}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(-\sqrt{b}, \sqrt{b}, \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left(-\sqrt{\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)\right) + \mathsf{fma}\left(-\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}, \sqrt{\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}}, \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{a \cdot 2}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\left(b \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot \left(b \cdot b\right)\right) - \left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c\right)\right)}}{\sqrt{\mathsf{fma}\left(b \cdot b, b \cdot b, \left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(b \cdot b + \left(4 \cdot a\right) \cdot c\right)\right)}} + \left(-b\right)}{a \cdot 2}\\
\end{array}double f(double a, double b, double c) {
double r926761 = b;
double r926762 = 0.0;
bool r926763 = r926761 >= r926762;
double r926764 = 2.0;
double r926765 = c;
double r926766 = r926764 * r926765;
double r926767 = -r926761;
double r926768 = r926761 * r926761;
double r926769 = 4.0;
double r926770 = a;
double r926771 = r926769 * r926770;
double r926772 = r926771 * r926765;
double r926773 = r926768 - r926772;
double r926774 = sqrt(r926773);
double r926775 = r926767 - r926774;
double r926776 = r926766 / r926775;
double r926777 = r926767 + r926774;
double r926778 = r926764 * r926770;
double r926779 = r926777 / r926778;
double r926780 = r926763 ? r926776 : r926779;
return r926780;
}
double f(double a, double b, double c) {
double r926781 = b;
double r926782 = -4.82289647433212e+153;
bool r926783 = r926781 <= r926782;
double r926784 = 0.0;
bool r926785 = r926781 >= r926784;
double r926786 = 2.0;
double r926787 = c;
double r926788 = r926786 * r926787;
double r926789 = a;
double r926790 = r926789 / r926781;
double r926791 = r926790 * r926787;
double r926792 = r926791 - r926781;
double r926793 = r926786 * r926792;
double r926794 = r926788 / r926793;
double r926795 = r926781 / r926787;
double r926796 = r926789 / r926795;
double r926797 = r926796 - r926781;
double r926798 = r926797 * r926786;
double r926799 = r926789 * r926786;
double r926800 = r926798 / r926799;
double r926801 = r926785 ? r926794 : r926800;
double r926802 = 4.866803345215698e+83;
bool r926803 = r926781 <= r926802;
double r926804 = sqrt(r926781);
double r926805 = -r926804;
double r926806 = r926781 * r926781;
double r926807 = 4.0;
double r926808 = r926807 * r926789;
double r926809 = r926808 * r926787;
double r926810 = r926806 - r926809;
double r926811 = cbrt(r926810);
double r926812 = sqrt(r926811);
double r926813 = r926811 * r926811;
double r926814 = sqrt(r926813);
double r926815 = -r926814;
double r926816 = r926812 * r926815;
double r926817 = fma(r926805, r926804, r926816);
double r926818 = -r926812;
double r926819 = r926812 * r926814;
double r926820 = fma(r926818, r926814, r926819);
double r926821 = r926817 + r926820;
double r926822 = r926788 / r926821;
double r926823 = sqrt(r926810);
double r926824 = -r926781;
double r926825 = r926823 + r926824;
double r926826 = r926825 / r926799;
double r926827 = r926785 ? r926822 : r926826;
double r926828 = r926781 * r926806;
double r926829 = r926828 * r926828;
double r926830 = r926809 * r926809;
double r926831 = r926809 * r926830;
double r926832 = r926829 - r926831;
double r926833 = sqrt(r926832);
double r926834 = r926806 + r926809;
double r926835 = r926809 * r926834;
double r926836 = fma(r926806, r926806, r926835);
double r926837 = sqrt(r926836);
double r926838 = r926833 / r926837;
double r926839 = r926838 + r926824;
double r926840 = r926839 / r926799;
double r926841 = r926785 ? r926794 : r926840;
double r926842 = r926803 ? r926827 : r926841;
double r926843 = r926783 ? r926801 : r926842;
return r926843;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.82289647433212e+153Initial program 60.9
Taylor expanded around inf 60.9
Simplified60.9
rmApplied add-sqr-sqrt60.9
Applied sqrt-prod60.9
Taylor expanded around -inf 11.4
Simplified2.5
if -4.82289647433212e+153 < b < 4.866803345215698e+83Initial program 8.7
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Applied add-sqr-sqrt8.9
Applied distribute-lft-neg-in8.9
Applied prod-diff8.9
if 4.866803345215698e+83 < b Initial program 28.8
Taylor expanded around inf 6.5
Simplified2.9
rmApplied flip3--2.9
Applied sqrt-div2.9
Simplified2.9
Simplified2.9
Final simplification6.7
herbie shell --seed 2019142 +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))))