\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 -4.285271160992641813120516826275381392108 \cdot 10^{136}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - e^{\log \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \left(\left(a \cdot \left(\sqrt[3]{\frac{c}{b}} \cdot \sqrt[3]{\frac{c}{b}}\right)\right) \cdot \sqrt[3]{\frac{c}{b}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le -1.609290623087753495768254237988414450863 \cdot 10^{-284}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}\\
\mathbf{elif}\;b \le 2.678238127073728805877873599258558355989 \cdot 10^{53}:\\
\;\;\;\;\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) + \left(2 \cdot \left(\left(a \cdot \left(\sqrt[3]{\frac{c}{b}} \cdot \sqrt[3]{\frac{c}{b}}\right)\right) \cdot e^{\frac{1}{3} \cdot \left(\log \left(\frac{-1}{b}\right) - \log \left(\frac{-1}{c}\right)\right)}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}double f(double a, double b, double c) {
double r47221 = b;
double r47222 = 0.0;
bool r47223 = r47221 >= r47222;
double r47224 = -r47221;
double r47225 = r47221 * r47221;
double r47226 = 4.0;
double r47227 = a;
double r47228 = r47226 * r47227;
double r47229 = c;
double r47230 = r47228 * r47229;
double r47231 = r47225 - r47230;
double r47232 = sqrt(r47231);
double r47233 = r47224 - r47232;
double r47234 = 2.0;
double r47235 = r47234 * r47227;
double r47236 = r47233 / r47235;
double r47237 = r47234 * r47229;
double r47238 = r47224 + r47232;
double r47239 = r47237 / r47238;
double r47240 = r47223 ? r47236 : r47239;
return r47240;
}
double f(double a, double b, double c) {
double r47241 = b;
double r47242 = -4.285271160992642e+136;
bool r47243 = r47241 <= r47242;
double r47244 = 0.0;
bool r47245 = r47241 >= r47244;
double r47246 = -r47241;
double r47247 = r47241 * r47241;
double r47248 = 4.0;
double r47249 = a;
double r47250 = r47248 * r47249;
double r47251 = c;
double r47252 = r47250 * r47251;
double r47253 = r47247 - r47252;
double r47254 = sqrt(r47253);
double r47255 = log(r47254);
double r47256 = exp(r47255);
double r47257 = r47246 - r47256;
double r47258 = 2.0;
double r47259 = r47258 * r47249;
double r47260 = r47257 / r47259;
double r47261 = r47258 * r47251;
double r47262 = r47251 / r47241;
double r47263 = cbrt(r47262);
double r47264 = r47263 * r47263;
double r47265 = r47249 * r47264;
double r47266 = r47265 * r47263;
double r47267 = r47258 * r47266;
double r47268 = r47267 - r47241;
double r47269 = r47246 + r47268;
double r47270 = r47261 / r47269;
double r47271 = r47245 ? r47260 : r47270;
double r47272 = -1.6092906230877535e-284;
bool r47273 = r47241 <= r47272;
double r47274 = r47249 * r47251;
double r47275 = r47274 / r47241;
double r47276 = r47258 * r47275;
double r47277 = r47241 - r47276;
double r47278 = r47246 - r47277;
double r47279 = r47278 / r47259;
double r47280 = r47246 + r47254;
double r47281 = r47261 / r47280;
double r47282 = r47245 ? r47279 : r47281;
double r47283 = 2.678238127073729e+53;
bool r47284 = r47241 <= r47283;
double r47285 = r47246 - r47254;
double r47286 = r47285 / r47259;
double r47287 = 0.3333333333333333;
double r47288 = -1.0;
double r47289 = r47288 / r47241;
double r47290 = log(r47289);
double r47291 = r47288 / r47251;
double r47292 = log(r47291);
double r47293 = r47290 - r47292;
double r47294 = r47287 * r47293;
double r47295 = exp(r47294);
double r47296 = r47265 * r47295;
double r47297 = r47258 * r47296;
double r47298 = r47297 - r47241;
double r47299 = r47246 + r47298;
double r47300 = r47261 / r47299;
double r47301 = r47245 ? r47286 : r47300;
double r47302 = r47284 ? r47301 : r47282;
double r47303 = r47273 ? r47282 : r47302;
double r47304 = r47243 ? r47271 : r47303;
return r47304;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.285271160992642e+136Initial program 34.3
Taylor expanded around -inf 5.9
rmApplied *-un-lft-identity5.9
Applied times-frac1.6
Simplified1.6
rmApplied add-cube-cbrt1.6
Applied associate-*r*1.6
rmApplied add-exp-log1.6
if -4.285271160992642e+136 < b < -1.6092906230877535e-284 or 2.678238127073729e+53 < b Initial program 19.2
Taylor expanded around inf 9.2
if -1.6092906230877535e-284 < b < 2.678238127073729e+53Initial program 9.2
Taylor expanded around -inf 11.3
rmApplied *-un-lft-identity11.3
Applied times-frac11.3
Simplified11.3
rmApplied add-cube-cbrt11.3
Applied associate-*r*11.3
Taylor expanded around -inf 11.3
Final simplification8.3
herbie shell --seed 2019362
(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)))))))