\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 -7.0212080290709876 \cdot 10^{145}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.2199100360588728 \cdot 10^{112}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot c\right) \cdot \frac{1}{\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 r27875 = b;
double r27876 = 0.0;
bool r27877 = r27875 >= r27876;
double r27878 = -r27875;
double r27879 = r27875 * r27875;
double r27880 = 4.0;
double r27881 = a;
double r27882 = r27880 * r27881;
double r27883 = c;
double r27884 = r27882 * r27883;
double r27885 = r27879 - r27884;
double r27886 = sqrt(r27885);
double r27887 = r27878 - r27886;
double r27888 = 2.0;
double r27889 = r27888 * r27881;
double r27890 = r27887 / r27889;
double r27891 = r27888 * r27883;
double r27892 = r27878 + r27886;
double r27893 = r27891 / r27892;
double r27894 = r27877 ? r27890 : r27893;
return r27894;
}
double f(double a, double b, double c) {
double r27895 = b;
double r27896 = -7.021208029070988e+145;
bool r27897 = r27895 <= r27896;
double r27898 = 0.0;
bool r27899 = r27895 >= r27898;
double r27900 = 1.0;
double r27901 = c;
double r27902 = r27901 / r27895;
double r27903 = a;
double r27904 = r27895 / r27903;
double r27905 = r27902 - r27904;
double r27906 = r27900 * r27905;
double r27907 = 2.0;
double r27908 = r27907 * r27901;
double r27909 = r27903 * r27901;
double r27910 = r27909 / r27895;
double r27911 = r27907 * r27910;
double r27912 = 2.0;
double r27913 = r27912 * r27895;
double r27914 = r27911 - r27913;
double r27915 = r27908 / r27914;
double r27916 = r27899 ? r27906 : r27915;
double r27917 = 1.2199100360588728e+112;
bool r27918 = r27895 <= r27917;
double r27919 = -r27895;
double r27920 = r27895 * r27895;
double r27921 = 4.0;
double r27922 = r27921 * r27903;
double r27923 = r27922 * r27901;
double r27924 = r27920 - r27923;
double r27925 = sqrt(r27924);
double r27926 = r27919 - r27925;
double r27927 = r27907 * r27903;
double r27928 = r27926 / r27927;
double r27929 = sqrt(r27925);
double r27930 = r27929 * r27929;
double r27931 = r27919 + r27930;
double r27932 = r27908 / r27931;
double r27933 = r27899 ? r27928 : r27932;
double r27934 = 1.0;
double r27935 = r27919 + r27925;
double r27936 = r27934 / r27935;
double r27937 = r27908 * r27936;
double r27938 = r27899 ? r27906 : r27937;
double r27939 = r27918 ? r27933 : r27938;
double r27940 = r27897 ? r27916 : r27939;
return r27940;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.021208029070988e+145Initial program 37.4
Taylor expanded around inf 37.4
Taylor expanded around 0 37.4
Simplified37.4
Taylor expanded around -inf 7.0
if -7.021208029070988e+145 < b < 1.2199100360588728e+112Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 1.2199100360588728e+112 < b Initial program 50.4
Taylor expanded around inf 10.5
Taylor expanded around 0 3.1
Simplified3.1
rmApplied div-inv3.1
Final simplification7.5
herbie shell --seed 2020081 +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)))))))