\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 58.70366934289741:\\
\;\;\;\;\frac{\frac{\left(\left(a \cdot c\right) \cdot -3\right) \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)} + \frac{\mathsf{fma}\left(\left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right), \mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right) \cdot \sqrt{\mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right)}, \left(-b \cdot \left(b \cdot b\right)\right) \cdot \left(\left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right)\right)\right)}{\mathsf{fma}\left(\mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right), \left(b \cdot b\right) \cdot \left(b \cdot b\right), \mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right)}, b \cdot b, b \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot \left(b \cdot b\right)\right)\right)}}{\mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, b, b \cdot b + \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)\right)}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(-3, \left(a \cdot c\right) \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, a \cdot \left(\left(c \cdot b\right) \cdot \frac{-3}{2}\right)\right)}{\mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, b, b \cdot b + \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)\right) \cdot 3}}{a}\\
\end{array}double f(double a, double b, double c) {
double r3395589 = b;
double r3395590 = -r3395589;
double r3395591 = r3395589 * r3395589;
double r3395592 = 3.0;
double r3395593 = a;
double r3395594 = r3395592 * r3395593;
double r3395595 = c;
double r3395596 = r3395594 * r3395595;
double r3395597 = r3395591 - r3395596;
double r3395598 = sqrt(r3395597);
double r3395599 = r3395590 + r3395598;
double r3395600 = r3395599 / r3395594;
return r3395600;
}
double f(double a, double b, double c) {
double r3395601 = b;
double r3395602 = 58.70366934289741;
bool r3395603 = r3395601 <= r3395602;
double r3395604 = a;
double r3395605 = c;
double r3395606 = r3395604 * r3395605;
double r3395607 = -3.0;
double r3395608 = r3395606 * r3395607;
double r3395609 = r3395601 * r3395601;
double r3395610 = fma(r3395606, r3395607, r3395609);
double r3395611 = sqrt(r3395610);
double r3395612 = r3395608 * r3395611;
double r3395613 = r3395609 * r3395609;
double r3395614 = r3395613 * r3395609;
double r3395615 = r3395607 * r3395605;
double r3395616 = fma(r3395604, r3395615, r3395609);
double r3395617 = sqrt(r3395616);
double r3395618 = r3395616 * r3395617;
double r3395619 = r3395601 * r3395609;
double r3395620 = -r3395619;
double r3395621 = r3395620 * r3395614;
double r3395622 = fma(r3395614, r3395618, r3395621);
double r3395623 = fma(r3395617, r3395609, r3395619);
double r3395624 = r3395623 * r3395619;
double r3395625 = fma(r3395616, r3395613, r3395624);
double r3395626 = r3395622 / r3395625;
double r3395627 = r3395612 + r3395626;
double r3395628 = r3395609 + r3395610;
double r3395629 = fma(r3395611, r3395601, r3395628);
double r3395630 = r3395627 / r3395629;
double r3395631 = 3.0;
double r3395632 = r3395631 * r3395604;
double r3395633 = r3395630 / r3395632;
double r3395634 = r3395606 * r3395611;
double r3395635 = r3395605 * r3395601;
double r3395636 = -1.5;
double r3395637 = r3395635 * r3395636;
double r3395638 = r3395604 * r3395637;
double r3395639 = fma(r3395607, r3395634, r3395638);
double r3395640 = r3395629 * r3395631;
double r3395641 = r3395639 / r3395640;
double r3395642 = r3395641 / r3395604;
double r3395643 = r3395603 ? r3395633 : r3395642;
return r3395643;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 58.70366934289741Initial program 27.5
Simplified27.5
rmApplied flip3--27.6
Simplified26.9
Simplified26.9
rmApplied fma-udef26.9
Applied distribute-rgt-in26.7
Applied associate--l+24.8
rmApplied flip3--24.9
Simplified25.1
Simplified25.1
if 58.70366934289741 < b Initial program 48.6
Simplified48.6
rmApplied flip3--48.6
Simplified48.3
Simplified48.3
rmApplied fma-udef48.3
Applied distribute-rgt-in48.2
Applied associate--l+41.6
Taylor expanded around inf 8.3
rmApplied associate-/r*8.3
Simplified8.3
Final simplification12.0
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))