\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.0410715251838527 \cdot 10^{+49}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-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)}}}\\
\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}{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}\\
\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 r976901 = b;
double r976902 = 0.0;
bool r976903 = r976901 >= r976902;
double r976904 = 2.0;
double r976905 = c;
double r976906 = r976904 * r976905;
double r976907 = -r976901;
double r976908 = r976901 * r976901;
double r976909 = 4.0;
double r976910 = a;
double r976911 = r976909 * r976910;
double r976912 = r976911 * r976905;
double r976913 = r976908 - r976912;
double r976914 = sqrt(r976913);
double r976915 = r976907 - r976914;
double r976916 = r976906 / r976915;
double r976917 = r976907 + r976914;
double r976918 = r976904 * r976910;
double r976919 = r976917 / r976918;
double r976920 = r976903 ? r976916 : r976919;
return r976920;
}
double f(double a, double b, double c) {
double r976921 = b;
double r976922 = 2.0410715251838527e+49;
bool r976923 = r976921 <= r976922;
double r976924 = 0.0;
bool r976925 = r976921 >= r976924;
double r976926 = 2.0;
double r976927 = c;
double r976928 = r976926 * r976927;
double r976929 = -r976921;
double r976930 = -4.0;
double r976931 = a;
double r976932 = r976931 * r976927;
double r976933 = r976921 * r976921;
double r976934 = fma(r976930, r976932, r976933);
double r976935 = sqrt(r976934);
double r976936 = sqrt(r976935);
double r976937 = r976936 * r976936;
double r976938 = r976929 - r976937;
double r976939 = r976928 / r976938;
double r976940 = r976935 - r976921;
double r976941 = r976940 / r976926;
double r976942 = r976941 / r976931;
double r976943 = r976925 ? r976939 : r976942;
double r976944 = r976931 / r976921;
double r976945 = r976944 * r976927;
double r976946 = r976945 - r976921;
double r976947 = r976926 * r976946;
double r976948 = r976928 / r976947;
double r976949 = r976925 ? r976948 : r976942;
double r976950 = r976923 ? r976943 : r976949;
return r976950;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2.0410715251838527e+49Initial program 16.9
Simplified16.8
rmApplied add-sqr-sqrt16.8
Applied sqrt-prod16.9
if 2.0410715251838527e+49 < b Initial program 25.8
Simplified25.8
rmApplied add-sqr-sqrt25.8
Applied sqrt-prod25.9
Taylor expanded around inf 7.6
Simplified4.4
Final simplification13.4
herbie shell --seed 2019162 +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))))