\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 -1.3607986211035491 \cdot 10^{+48}:\\
\;\;\;\;\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{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 7.052614559736995 \cdot 10^{+62}:\\
\;\;\;\;\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{\sqrt{\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}}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} + \left(-b\right)}{2 \cdot 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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r1405027 = b;
double r1405028 = 0.0;
bool r1405029 = r1405027 >= r1405028;
double r1405030 = 2.0;
double r1405031 = c;
double r1405032 = r1405030 * r1405031;
double r1405033 = -r1405027;
double r1405034 = r1405027 * r1405027;
double r1405035 = 4.0;
double r1405036 = a;
double r1405037 = r1405035 * r1405036;
double r1405038 = r1405037 * r1405031;
double r1405039 = r1405034 - r1405038;
double r1405040 = sqrt(r1405039);
double r1405041 = r1405033 - r1405040;
double r1405042 = r1405032 / r1405041;
double r1405043 = r1405033 + r1405040;
double r1405044 = r1405030 * r1405036;
double r1405045 = r1405043 / r1405044;
double r1405046 = r1405029 ? r1405042 : r1405045;
return r1405046;
}
double f(double a, double b, double c) {
double r1405047 = b;
double r1405048 = -1.3607986211035491e+48;
bool r1405049 = r1405047 <= r1405048;
double r1405050 = 0.0;
bool r1405051 = r1405047 >= r1405050;
double r1405052 = 2.0;
double r1405053 = c;
double r1405054 = r1405052 * r1405053;
double r1405055 = -r1405047;
double r1405056 = r1405047 * r1405047;
double r1405057 = 4.0;
double r1405058 = a;
double r1405059 = r1405057 * r1405058;
double r1405060 = r1405059 * r1405053;
double r1405061 = r1405056 - r1405060;
double r1405062 = sqrt(r1405061);
double r1405063 = r1405055 - r1405062;
double r1405064 = r1405054 / r1405063;
double r1405065 = r1405058 / r1405047;
double r1405066 = r1405065 * r1405053;
double r1405067 = r1405066 - r1405047;
double r1405068 = r1405052 * r1405067;
double r1405069 = r1405052 * r1405058;
double r1405070 = r1405068 / r1405069;
double r1405071 = r1405051 ? r1405064 : r1405070;
double r1405072 = 7.052614559736995e+62;
bool r1405073 = r1405047 <= r1405072;
double r1405074 = cbrt(r1405061);
double r1405075 = sqrt(r1405074);
double r1405076 = r1405074 * r1405074;
double r1405077 = sqrt(r1405076);
double r1405078 = r1405075 * r1405077;
double r1405079 = sqrt(r1405078);
double r1405080 = sqrt(r1405062);
double r1405081 = r1405079 * r1405080;
double r1405082 = r1405081 + r1405055;
double r1405083 = r1405082 / r1405069;
double r1405084 = r1405051 ? r1405064 : r1405083;
double r1405085 = r1405054 / r1405068;
double r1405086 = r1405062 + r1405055;
double r1405087 = r1405086 / r1405069;
double r1405088 = r1405051 ? r1405085 : r1405087;
double r1405089 = r1405073 ? r1405084 : r1405088;
double r1405090 = r1405049 ? r1405071 : r1405089;
return r1405090;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3607986211035491e+48Initial program 35.1
rmApplied add-sqr-sqrt35.1
Applied sqrt-prod35.2
Taylor expanded around -inf 10.2
Simplified5.8
if -1.3607986211035491e+48 < b < 7.052614559736995e+62Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
rmApplied add-cube-cbrt9.6
Applied sqrt-prod9.6
if 7.052614559736995e+62 < b Initial program 25.7
Taylor expanded around inf 6.5
Simplified3.2
Final simplification7.1
herbie shell --seed 2019158 +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))))