\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left({b}^{2} - {b}^{2}\right) + \left(3 \cdot a\right) \cdot c}{\left(3 \cdot a\right) \cdot \left(-b\right) + \left(3 \cdot a\right) \cdot \left(-\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r110770 = b;
double r110771 = -r110770;
double r110772 = r110770 * r110770;
double r110773 = 3.0;
double r110774 = a;
double r110775 = r110773 * r110774;
double r110776 = c;
double r110777 = r110775 * r110776;
double r110778 = r110772 - r110777;
double r110779 = sqrt(r110778);
double r110780 = r110771 + r110779;
double r110781 = r110780 / r110775;
return r110781;
}
double f(double a, double b, double c) {
double r110782 = b;
double r110783 = 2.0;
double r110784 = pow(r110782, r110783);
double r110785 = r110784 - r110784;
double r110786 = 3.0;
double r110787 = a;
double r110788 = r110786 * r110787;
double r110789 = c;
double r110790 = r110788 * r110789;
double r110791 = r110785 + r110790;
double r110792 = -r110782;
double r110793 = r110788 * r110792;
double r110794 = r110782 * r110782;
double r110795 = r110794 - r110790;
double r110796 = sqrt(r110795);
double r110797 = -r110796;
double r110798 = r110788 * r110797;
double r110799 = r110793 + r110798;
double r110800 = r110791 / r110799;
return r110800;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.6
rmApplied flip-+43.7
Simplified0.5
rmApplied associate-*r*0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
rmApplied sub-neg0.4
Applied distribute-lft-in0.4
Final simplification0.4
herbie shell --seed 2020024
(FPCore (a b c)
:name "Cubic critical, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))