\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 1.5596668453223772 \cdot 10^{+21}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b} \cdot \sqrt{\sqrt{\sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\left(\sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}} \cdot \sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}} - b}}{2}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b}{2}}\\
\end{array}double f(double a, double b, double c) {
double r905209 = b;
double r905210 = 0.0;
bool r905211 = r905209 >= r905210;
double r905212 = -r905209;
double r905213 = r905209 * r905209;
double r905214 = 4.0;
double r905215 = a;
double r905216 = r905214 * r905215;
double r905217 = c;
double r905218 = r905216 * r905217;
double r905219 = r905213 - r905218;
double r905220 = sqrt(r905219);
double r905221 = r905212 - r905220;
double r905222 = 2.0;
double r905223 = r905222 * r905215;
double r905224 = r905221 / r905223;
double r905225 = r905222 * r905217;
double r905226 = r905212 + r905220;
double r905227 = r905225 / r905226;
double r905228 = r905211 ? r905224 : r905227;
return r905228;
}
double f(double a, double b, double c) {
double r905229 = b;
double r905230 = 1.5596668453223772e+21;
bool r905231 = r905229 <= r905230;
double r905232 = 0.0;
bool r905233 = r905229 >= r905232;
double r905234 = -r905229;
double r905235 = c;
double r905236 = a;
double r905237 = -4.0;
double r905238 = r905236 * r905237;
double r905239 = r905229 * r905229;
double r905240 = fma(r905235, r905238, r905239);
double r905241 = sqrt(r905240);
double r905242 = r905234 - r905241;
double r905243 = 2.0;
double r905244 = r905243 * r905236;
double r905245 = r905242 / r905244;
double r905246 = r905241 - r905229;
double r905247 = sqrt(r905246);
double r905248 = cbrt(r905240);
double r905249 = sqrt(r905248);
double r905250 = r905248 * r905248;
double r905251 = r905250 * r905248;
double r905252 = cbrt(r905251);
double r905253 = r905252 * r905248;
double r905254 = sqrt(r905253);
double r905255 = r905249 * r905254;
double r905256 = r905255 - r905229;
double r905257 = sqrt(r905256);
double r905258 = r905247 * r905257;
double r905259 = r905258 / r905243;
double r905260 = r905235 / r905259;
double r905261 = r905233 ? r905245 : r905260;
double r905262 = r905236 / r905229;
double r905263 = r905262 * r905235;
double r905264 = r905263 - r905229;
double r905265 = r905243 * r905264;
double r905266 = r905265 / r905244;
double r905267 = r905246 / r905243;
double r905268 = r905235 / r905267;
double r905269 = r905233 ? r905266 : r905268;
double r905270 = r905231 ? r905261 : r905269;
return r905270;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1.5596668453223772e+21Initial program 15.9
Simplified15.9
rmApplied add-sqr-sqrt16.1
rmApplied add-cube-cbrt16.1
Applied sqrt-prod16.1
rmApplied add-cbrt-cube16.1
if 1.5596668453223772e+21 < b Initial program 32.0
Simplified31.9
Taylor expanded around inf 10.4
Simplified6.1
Final simplification13.8
herbie shell --seed 2019168 +o rules:numerics
(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)))))))