\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -7.478383220944118 \cdot 10^{90}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 1.071982619004943 \cdot 10^{-308}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right) \cdot \frac{1}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.8676563684114658 \cdot 10^{102}:\\
\;\;\;\;\frac{1}{\frac{1}{\frac{c}{1}} \cdot \left(\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, 0 - 3 \cdot \left(a \cdot c\right)\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r129502 = b;
double r129503 = -r129502;
double r129504 = r129502 * r129502;
double r129505 = 3.0;
double r129506 = a;
double r129507 = r129505 * r129506;
double r129508 = c;
double r129509 = r129507 * r129508;
double r129510 = r129504 - r129509;
double r129511 = sqrt(r129510);
double r129512 = r129503 + r129511;
double r129513 = r129512 / r129507;
return r129513;
}
double f(double a, double b, double c) {
double r129514 = b;
double r129515 = -7.478383220944118e+90;
bool r129516 = r129514 <= r129515;
double r129517 = 0.5;
double r129518 = c;
double r129519 = r129518 / r129514;
double r129520 = r129517 * r129519;
double r129521 = 0.6666666666666666;
double r129522 = a;
double r129523 = r129514 / r129522;
double r129524 = r129521 * r129523;
double r129525 = r129520 - r129524;
double r129526 = 1.0719826190049434e-308;
bool r129527 = r129514 <= r129526;
double r129528 = -r129514;
double r129529 = r129514 * r129514;
double r129530 = 3.0;
double r129531 = r129530 * r129522;
double r129532 = r129531 * r129518;
double r129533 = r129529 - r129532;
double r129534 = sqrt(r129533);
double r129535 = r129528 + r129534;
double r129536 = 1.0;
double r129537 = r129536 / r129531;
double r129538 = r129535 * r129537;
double r129539 = 1.8676563684114658e+102;
bool r129540 = r129514 <= r129539;
double r129541 = r129518 / r129536;
double r129542 = r129536 / r129541;
double r129543 = 0.0;
double r129544 = r129522 * r129518;
double r129545 = r129530 * r129544;
double r129546 = r129543 - r129545;
double r129547 = fma(r129514, r129514, r129546);
double r129548 = sqrt(r129547);
double r129549 = r129528 - r129548;
double r129550 = r129542 * r129549;
double r129551 = r129536 / r129550;
double r129552 = -0.5;
double r129553 = r129552 * r129519;
double r129554 = r129540 ? r129551 : r129553;
double r129555 = r129527 ? r129538 : r129554;
double r129556 = r129516 ? r129525 : r129555;
return r129556;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -7.478383220944118e+90Initial program 44.9
Taylor expanded around -inf 3.7
if -7.478383220944118e+90 < b < 1.0719826190049434e-308Initial program 9.2
rmApplied div-inv9.2
if 1.0719826190049434e-308 < b < 1.8676563684114658e+102Initial program 33.5
rmApplied flip-+33.5
Simplified17.3
rmApplied fma-neg17.3
Simplified17.3
rmApplied clear-num17.5
Simplified16.5
rmApplied clear-num16.5
Simplified9.2
if 1.8676563684114658e+102 < b Initial program 59.8
Taylor expanded around inf 2.4
Final simplification6.7
herbie shell --seed 2020024 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))