\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(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}} \cdot \frac{1}{3 \cdot a}double f(double a, double b, double c) {
double r109768 = b;
double r109769 = -r109768;
double r109770 = r109768 * r109768;
double r109771 = 3.0;
double r109772 = a;
double r109773 = r109771 * r109772;
double r109774 = c;
double r109775 = r109773 * r109774;
double r109776 = r109770 - r109775;
double r109777 = sqrt(r109776);
double r109778 = r109769 + r109777;
double r109779 = r109778 / r109773;
return r109779;
}
double f(double a, double b, double c) {
double r109780 = b;
double r109781 = 2.0;
double r109782 = pow(r109780, r109781);
double r109783 = r109782 - r109782;
double r109784 = 3.0;
double r109785 = a;
double r109786 = r109784 * r109785;
double r109787 = c;
double r109788 = r109786 * r109787;
double r109789 = r109783 + r109788;
double r109790 = -r109780;
double r109791 = r109780 * r109780;
double r109792 = r109791 - r109788;
double r109793 = sqrt(r109792);
double r109794 = r109790 - r109793;
double r109795 = r109789 / r109794;
double r109796 = 1.0;
double r109797 = r109796 / r109786;
double r109798 = r109795 * r109797;
return r109798;
}



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
Final simplification0.5
herbie shell --seed 2020059
(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)))