\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{3 \cdot a}{3 \cdot a} \cdot c}{\left(-b\right) - \sqrt{\frac{{b}^{4} - \left(\left(3 \cdot a\right) \cdot c\right) \cdot \left(\left(3 \cdot a\right) \cdot c\right)}{b \cdot b + \left(3 \cdot a\right) \cdot c}}}double f(double a, double b, double c) {
double r54712 = b;
double r54713 = -r54712;
double r54714 = r54712 * r54712;
double r54715 = 3.0;
double r54716 = a;
double r54717 = r54715 * r54716;
double r54718 = c;
double r54719 = r54717 * r54718;
double r54720 = r54714 - r54719;
double r54721 = sqrt(r54720);
double r54722 = r54713 + r54721;
double r54723 = r54722 / r54717;
return r54723;
}
double f(double a, double b, double c) {
double r54724 = 3.0;
double r54725 = a;
double r54726 = r54724 * r54725;
double r54727 = r54726 / r54726;
double r54728 = c;
double r54729 = r54727 * r54728;
double r54730 = b;
double r54731 = -r54730;
double r54732 = 4.0;
double r54733 = pow(r54730, r54732);
double r54734 = r54726 * r54728;
double r54735 = r54734 * r54734;
double r54736 = r54733 - r54735;
double r54737 = r54730 * r54730;
double r54738 = r54737 + r54734;
double r54739 = r54736 / r54738;
double r54740 = sqrt(r54739);
double r54741 = r54731 - r54740;
double r54742 = r54729 / r54741;
return r54742;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.8
rmApplied flip-+28.8
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied times-frac0.6
Applied associate-/l*0.6
Simplified0.5
rmApplied associate-/r/0.5
Applied associate-/r*0.5
Simplified0.3
rmApplied flip--0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019347
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))