\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 8.254129378667163 \cdot 10^{+18}:\\
\;\;\;\;\frac{\frac{(\left(\sqrt{\sqrt{\sqrt[3]{\left((c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_* \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*\right) \cdot (c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{-2}{b} \cdot e^{\log c + \log a}} \cdot \sqrt[3]{\frac{1}{2}}}{\sqrt{a}} \cdot \frac{\sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}} \cdot \sqrt[3]{\frac{(\left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(-4 \cdot a\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}}{\sqrt{a}}\\
\end{array}double f(double a, double b, double c) {
double r1932355 = b;
double r1932356 = -r1932355;
double r1932357 = r1932355 * r1932355;
double r1932358 = 4.0;
double r1932359 = a;
double r1932360 = r1932358 * r1932359;
double r1932361 = c;
double r1932362 = r1932360 * r1932361;
double r1932363 = r1932357 - r1932362;
double r1932364 = sqrt(r1932363);
double r1932365 = r1932356 + r1932364;
double r1932366 = 2.0;
double r1932367 = r1932366 * r1932359;
double r1932368 = r1932365 / r1932367;
return r1932368;
}
double f(double a, double b, double c) {
double r1932369 = b;
double r1932370 = 8.254129378667163e+18;
bool r1932371 = r1932369 <= r1932370;
double r1932372 = c;
double r1932373 = -4.0;
double r1932374 = a;
double r1932375 = r1932373 * r1932374;
double r1932376 = r1932369 * r1932369;
double r1932377 = fma(r1932372, r1932375, r1932376);
double r1932378 = r1932377 * r1932377;
double r1932379 = r1932378 * r1932377;
double r1932380 = cbrt(r1932379);
double r1932381 = sqrt(r1932380);
double r1932382 = sqrt(r1932381);
double r1932383 = sqrt(r1932377);
double r1932384 = sqrt(r1932383);
double r1932385 = -r1932369;
double r1932386 = fma(r1932382, r1932384, r1932385);
double r1932387 = 2.0;
double r1932388 = r1932386 / r1932387;
double r1932389 = r1932388 / r1932374;
double r1932390 = -2.0;
double r1932391 = r1932390 / r1932369;
double r1932392 = log(r1932372);
double r1932393 = log(r1932374);
double r1932394 = r1932392 + r1932393;
double r1932395 = exp(r1932394);
double r1932396 = r1932391 * r1932395;
double r1932397 = cbrt(r1932396);
double r1932398 = 0.5;
double r1932399 = cbrt(r1932398);
double r1932400 = r1932397 * r1932399;
double r1932401 = sqrt(r1932374);
double r1932402 = r1932400 / r1932401;
double r1932403 = fma(r1932384, r1932384, r1932385);
double r1932404 = r1932403 / r1932387;
double r1932405 = cbrt(r1932404);
double r1932406 = r1932405 * r1932405;
double r1932407 = r1932406 / r1932401;
double r1932408 = r1932402 * r1932407;
double r1932409 = r1932371 ? r1932389 : r1932408;
return r1932409;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 8.254129378667163e+18Initial program 48.8
Simplified48.8
rmApplied add-sqr-sqrt48.8
Applied sqrt-prod48.6
Applied fma-neg48.0
rmApplied add-cbrt-cube48.0
if 8.254129378667163e+18 < b Initial program 58.8
Simplified58.8
rmApplied add-sqr-sqrt58.8
Applied sqrt-prod58.5
Applied fma-neg58.0
rmApplied add-sqr-sqrt58.0
Applied add-cube-cbrt58.0
Applied times-frac58.0
Taylor expanded around 0 63.5
Simplified56.1
Final simplification51.1
herbie shell --seed 2019104 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))