\begin{array}{l}
\mathbf{if}\;b \ge 0.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.3437359308500901 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.31998195619180524 \cdot 10^{84}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r25144 = b;
double r25145 = 0.0;
bool r25146 = r25144 >= r25145;
double r25147 = 2.0;
double r25148 = c;
double r25149 = r25147 * r25148;
double r25150 = -r25144;
double r25151 = r25144 * r25144;
double r25152 = 4.0;
double r25153 = a;
double r25154 = r25152 * r25153;
double r25155 = r25154 * r25148;
double r25156 = r25151 - r25155;
double r25157 = sqrt(r25156);
double r25158 = r25150 - r25157;
double r25159 = r25149 / r25158;
double r25160 = r25150 + r25157;
double r25161 = r25147 * r25153;
double r25162 = r25160 / r25161;
double r25163 = r25146 ? r25159 : r25162;
return r25163;
}
double f(double a, double b, double c) {
double r25164 = b;
double r25165 = -1.34373593085009e+154;
bool r25166 = r25164 <= r25165;
double r25167 = 0.0;
bool r25168 = r25164 >= r25167;
double r25169 = 2.0;
double r25170 = c;
double r25171 = r25169 * r25170;
double r25172 = -r25164;
double r25173 = r25164 * r25164;
double r25174 = 4.0;
double r25175 = a;
double r25176 = r25174 * r25175;
double r25177 = r25176 * r25170;
double r25178 = r25173 - r25177;
double r25179 = sqrt(r25178);
double r25180 = r25172 - r25179;
double r25181 = r25171 / r25180;
double r25182 = r25175 * r25170;
double r25183 = r25182 / r25164;
double r25184 = r25169 * r25183;
double r25185 = r25184 - r25164;
double r25186 = r25172 + r25185;
double r25187 = r25169 * r25175;
double r25188 = r25186 / r25187;
double r25189 = r25168 ? r25181 : r25188;
double r25190 = 1.3199819561918052e+84;
bool r25191 = r25164 <= r25190;
double r25192 = sqrt(r25179);
double r25193 = r25192 * r25192;
double r25194 = r25172 - r25193;
double r25195 = r25171 / r25194;
double r25196 = r25172 + r25179;
double r25197 = r25196 / r25187;
double r25198 = r25168 ? r25195 : r25197;
double r25199 = r25164 - r25184;
double r25200 = r25172 - r25199;
double r25201 = r25171 / r25200;
double r25202 = r25168 ? r25201 : r25197;
double r25203 = r25191 ? r25198 : r25202;
double r25204 = r25166 ? r25189 : r25203;
return r25204;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.34373593085009e+154Initial program 64.0
Taylor expanded around -inf 12.5
if -1.34373593085009e+154 < b < 1.3199819561918052e+84Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 1.3199819561918052e+84 < b Initial program 28.6
rmApplied add-cube-cbrt28.7
Taylor expanded around inf 6.5
Final simplification8.8
herbie shell --seed 2020056 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))