\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.085320093966694026309795848133442393253 \cdot 10^{114}:\\
\;\;\;\;\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{2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le -6.724716266922556499072228000203116587273 \cdot 10^{-252}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(1 + \left(\left(-b\right) + \left(-b\right)\right)\right) + \frac{-1}{1}}\\
\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 \le 5.263391352577237531613239682082042403214 \cdot 10^{98}:\\
\;\;\;\;\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{\frac{\mathsf{fma}\left(b, b, -\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right)\right)}{\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(1 + \left(\left(-b\right) + \left(-b\right)\right)\right) + \frac{-1}{1}}\\
\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 r44182 = b;
double r44183 = 0.0;
bool r44184 = r44182 >= r44183;
double r44185 = 2.0;
double r44186 = c;
double r44187 = r44185 * r44186;
double r44188 = -r44182;
double r44189 = r44182 * r44182;
double r44190 = 4.0;
double r44191 = a;
double r44192 = r44190 * r44191;
double r44193 = r44192 * r44186;
double r44194 = r44189 - r44193;
double r44195 = sqrt(r44194);
double r44196 = r44188 - r44195;
double r44197 = r44187 / r44196;
double r44198 = r44188 + r44195;
double r44199 = r44185 * r44191;
double r44200 = r44198 / r44199;
double r44201 = r44184 ? r44197 : r44200;
return r44201;
}
double f(double a, double b, double c) {
double r44202 = b;
double r44203 = -1.085320093966694e+114;
bool r44204 = r44202 <= r44203;
double r44205 = 0.0;
bool r44206 = r44202 >= r44205;
double r44207 = 2.0;
double r44208 = c;
double r44209 = r44207 * r44208;
double r44210 = -r44202;
double r44211 = r44202 * r44202;
double r44212 = 4.0;
double r44213 = a;
double r44214 = r44212 * r44213;
double r44215 = r44214 * r44208;
double r44216 = r44211 - r44215;
double r44217 = sqrt(r44216);
double r44218 = r44210 - r44217;
double r44219 = r44209 / r44218;
double r44220 = cbrt(r44202);
double r44221 = r44220 * r44220;
double r44222 = r44213 / r44221;
double r44223 = r44208 / r44220;
double r44224 = r44222 * r44223;
double r44225 = r44207 * r44224;
double r44226 = 2.0;
double r44227 = r44226 * r44202;
double r44228 = r44225 - r44227;
double r44229 = r44207 * r44213;
double r44230 = r44228 / r44229;
double r44231 = r44206 ? r44219 : r44230;
double r44232 = -6.7247162669225565e-252;
bool r44233 = r44202 <= r44232;
double r44234 = 1.0;
double r44235 = r44210 + r44210;
double r44236 = r44234 + r44235;
double r44237 = -r44234;
double r44238 = r44237 / r44234;
double r44239 = r44236 + r44238;
double r44240 = r44209 / r44239;
double r44241 = r44210 + r44217;
double r44242 = r44241 / r44229;
double r44243 = r44206 ? r44240 : r44242;
double r44244 = 5.2633913525772375e+98;
bool r44245 = r44202 <= r44244;
double r44246 = -r44216;
double r44247 = fma(r44202, r44202, r44246);
double r44248 = r44247 / r44218;
double r44249 = r44248 / r44229;
double r44250 = r44206 ? r44219 : r44249;
double r44251 = r44245 ? r44250 : r44243;
double r44252 = r44233 ? r44243 : r44251;
double r44253 = r44204 ? r44231 : r44252;
return r44253;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.085320093966694e+114Initial program 50.6
Taylor expanded around -inf 11.1
rmApplied add-cube-cbrt11.1
Applied times-frac4.0
if -1.085320093966694e+114 < b < -6.7247162669225565e-252 or 5.2633913525772375e+98 < b Initial program 19.2
rmApplied expm1-log1p-u19.6
Taylor expanded around inf 7.7
Simplified6.2
if -6.7247162669225565e-252 < b < 5.2633913525772375e+98Initial program 9.0
rmApplied flip-+9.0
Simplified9.1
Final simplification6.8
herbie shell --seed 2019353 +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))))