\begin{array}{l}
\mathbf{if}\;b \ge 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 1.9280516389664611 \cdot 10^{+37}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, -b\right)}{2}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(\frac{a}{\frac{b}{c}} - b\right) \cdot 2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b}{2}}\\
\end{array}double f(double a, double b, double c) {
double r842894 = b;
double r842895 = 0.0;
bool r842896 = r842894 >= r842895;
double r842897 = -r842894;
double r842898 = r842894 * r842894;
double r842899 = 4.0;
double r842900 = a;
double r842901 = r842899 * r842900;
double r842902 = c;
double r842903 = r842901 * r842902;
double r842904 = r842898 - r842903;
double r842905 = sqrt(r842904);
double r842906 = r842897 - r842905;
double r842907 = 2.0;
double r842908 = r842907 * r842900;
double r842909 = r842906 / r842908;
double r842910 = r842907 * r842902;
double r842911 = r842897 + r842905;
double r842912 = r842910 / r842911;
double r842913 = r842896 ? r842909 : r842912;
return r842913;
}
double f(double a, double b, double c) {
double r842914 = b;
double r842915 = 1.9280516389664611e+37;
bool r842916 = r842914 <= r842915;
double r842917 = 0.0;
bool r842918 = r842914 >= r842917;
double r842919 = -r842914;
double r842920 = c;
double r842921 = a;
double r842922 = -4.0;
double r842923 = r842921 * r842922;
double r842924 = r842914 * r842914;
double r842925 = fma(r842920, r842923, r842924);
double r842926 = sqrt(r842925);
double r842927 = r842919 - r842926;
double r842928 = 2.0;
double r842929 = r842928 * r842921;
double r842930 = r842927 / r842929;
double r842931 = sqrt(r842926);
double r842932 = fma(r842931, r842931, r842919);
double r842933 = r842932 / r842928;
double r842934 = r842920 / r842933;
double r842935 = r842918 ? r842930 : r842934;
double r842936 = r842914 / r842920;
double r842937 = r842921 / r842936;
double r842938 = r842937 - r842914;
double r842939 = r842938 * r842928;
double r842940 = r842939 / r842929;
double r842941 = r842926 - r842914;
double r842942 = r842941 / r842928;
double r842943 = r842920 / r842942;
double r842944 = r842918 ? r842940 : r842943;
double r842945 = r842916 ? r842935 : r842944;
return r842945;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1.9280516389664611e+37Initial program 15.3
Simplified15.3
rmApplied add-sqr-sqrt15.3
Applied sqrt-prod15.4
Applied fma-neg15.4
if 1.9280516389664611e+37 < b Initial program 33.2
Simplified33.2
Taylor expanded around inf 11.2
Simplified6.8
Final simplification13.6
herbie shell --seed 2019149 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))