\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{3 \cdot \left(a \cdot c\right)}{\left(a \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)\right) \cdot 3}double f(double a, double b, double c) {
double r84783 = b;
double r84784 = -r84783;
double r84785 = r84783 * r84783;
double r84786 = 3.0;
double r84787 = a;
double r84788 = r84786 * r84787;
double r84789 = c;
double r84790 = r84788 * r84789;
double r84791 = r84785 - r84790;
double r84792 = sqrt(r84791);
double r84793 = r84784 + r84792;
double r84794 = r84793 / r84788;
return r84794;
}
double f(double a, double b, double c) {
double r84795 = 3.0;
double r84796 = a;
double r84797 = c;
double r84798 = r84796 * r84797;
double r84799 = r84795 * r84798;
double r84800 = b;
double r84801 = -r84800;
double r84802 = r84800 * r84800;
double r84803 = r84795 * r84796;
double r84804 = r84803 * r84797;
double r84805 = r84802 - r84804;
double r84806 = sqrt(r84805);
double r84807 = r84801 - r84806;
double r84808 = r84796 * r84807;
double r84809 = r84808 * r84795;
double r84810 = r84799 / r84809;
return r84810;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 44.1
rmApplied flip-+44.1
Simplified0.5
rmApplied div-inv0.6
Applied associate-/l*0.6
Simplified0.5
Final simplification0.5
herbie shell --seed 2019303
(FPCore (a b c)
:name "Cubic critical, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))