\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 -8.582957905450698 \cdot 10^{+153}:\\
\;\;\;\;\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{c \cdot 2}{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 4.466989066425707 \cdot 10^{+89}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1183893 = b;
double r1183894 = 0.0;
bool r1183895 = r1183893 >= r1183894;
double r1183896 = -r1183893;
double r1183897 = r1183893 * r1183893;
double r1183898 = 4.0;
double r1183899 = a;
double r1183900 = r1183898 * r1183899;
double r1183901 = c;
double r1183902 = r1183900 * r1183901;
double r1183903 = r1183897 - r1183902;
double r1183904 = sqrt(r1183903);
double r1183905 = r1183896 - r1183904;
double r1183906 = 2.0;
double r1183907 = r1183906 * r1183899;
double r1183908 = r1183905 / r1183907;
double r1183909 = r1183906 * r1183901;
double r1183910 = r1183896 + r1183904;
double r1183911 = r1183909 / r1183910;
double r1183912 = r1183895 ? r1183908 : r1183911;
return r1183912;
}
double f(double a, double b, double c) {
double r1183913 = b;
double r1183914 = -8.582957905450698e+153;
bool r1183915 = r1183913 <= r1183914;
double r1183916 = 0.0;
bool r1183917 = r1183913 >= r1183916;
double r1183918 = -r1183913;
double r1183919 = r1183913 * r1183913;
double r1183920 = 4.0;
double r1183921 = a;
double r1183922 = r1183920 * r1183921;
double r1183923 = c;
double r1183924 = r1183922 * r1183923;
double r1183925 = r1183919 - r1183924;
double r1183926 = sqrt(r1183925);
double r1183927 = r1183918 - r1183926;
double r1183928 = 2.0;
double r1183929 = r1183928 * r1183921;
double r1183930 = r1183927 / r1183929;
double r1183931 = r1183923 * r1183928;
double r1183932 = r1183923 / r1183913;
double r1183933 = r1183921 * r1183932;
double r1183934 = r1183933 - r1183913;
double r1183935 = r1183928 * r1183934;
double r1183936 = r1183931 / r1183935;
double r1183937 = r1183917 ? r1183930 : r1183936;
double r1183938 = 4.466989066425707e+89;
bool r1183939 = r1183913 <= r1183938;
double r1183940 = sqrt(r1183926);
double r1183941 = r1183940 * r1183940;
double r1183942 = r1183918 - r1183941;
double r1183943 = r1183942 / r1183929;
double r1183944 = r1183926 + r1183918;
double r1183945 = r1183931 / r1183944;
double r1183946 = r1183917 ? r1183943 : r1183945;
double r1183947 = r1183935 / r1183929;
double r1183948 = r1183917 ? r1183947 : r1183945;
double r1183949 = r1183939 ? r1183946 : r1183948;
double r1183950 = r1183915 ? r1183937 : r1183949;
return r1183950;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -8.582957905450698e+153Initial program 37.8
Taylor expanded around -inf 5.4
Simplified1.0
if -8.582957905450698e+153 < b < 4.466989066425707e+89Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.5
if 4.466989066425707e+89 < b Initial program 42.0
rmApplied add-sqr-sqrt42.0
Applied sqrt-prod42.1
Taylor expanded around inf 9.6
Simplified4.3
Final simplification6.5
herbie shell --seed 2019107
(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)))))))