\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{-\left(b + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r53807 = b;
double r53808 = -r53807;
double r53809 = r53807 * r53807;
double r53810 = 3.0;
double r53811 = a;
double r53812 = r53810 * r53811;
double r53813 = c;
double r53814 = r53812 * r53813;
double r53815 = r53809 - r53814;
double r53816 = sqrt(r53815);
double r53817 = r53808 + r53816;
double r53818 = r53817 / r53812;
return r53818;
}
double f(double a, double b, double c) {
double r53819 = c;
double r53820 = b;
double r53821 = r53820 * r53820;
double r53822 = 3.0;
double r53823 = a;
double r53824 = r53822 * r53823;
double r53825 = r53824 * r53819;
double r53826 = r53821 - r53825;
double r53827 = sqrt(r53826);
double r53828 = r53820 + r53827;
double r53829 = -r53828;
double r53830 = r53819 / r53829;
return r53830;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.9
rmApplied flip-+43.9
Simplified0.6
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.2
herbie shell --seed 2019304
(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)))