\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{a} \cdot \frac{a}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r94653 = b;
double r94654 = -r94653;
double r94655 = r94653 * r94653;
double r94656 = 3.0;
double r94657 = a;
double r94658 = r94656 * r94657;
double r94659 = c;
double r94660 = r94658 * r94659;
double r94661 = r94655 - r94660;
double r94662 = sqrt(r94661);
double r94663 = r94654 + r94662;
double r94664 = r94663 / r94658;
return r94664;
}
double f(double a, double b, double c) {
double r94665 = c;
double r94666 = a;
double r94667 = r94665 / r94666;
double r94668 = b;
double r94669 = -r94668;
double r94670 = r94668 * r94668;
double r94671 = 3.0;
double r94672 = r94671 * r94666;
double r94673 = r94672 * r94665;
double r94674 = r94670 - r94673;
double r94675 = sqrt(r94674);
double r94676 = r94669 - r94675;
double r94677 = r94666 / r94676;
double r94678 = r94667 * r94677;
return r94678;
}



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
Simplified0.6
Simplified0.6
rmApplied associate-/r*0.6
Final simplification0.5
herbie shell --seed 2019304
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))