\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)}{3} \cdot \frac{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{a}double f(double a, double b, double c) {
double r93643 = b;
double r93644 = -r93643;
double r93645 = r93643 * r93643;
double r93646 = 3.0;
double r93647 = a;
double r93648 = r93646 * r93647;
double r93649 = c;
double r93650 = r93648 * r93649;
double r93651 = r93645 - r93650;
double r93652 = sqrt(r93651);
double r93653 = r93644 + r93652;
double r93654 = r93653 / r93648;
return r93654;
}
double f(double a, double b, double c) {
double r93655 = 3.0;
double r93656 = a;
double r93657 = c;
double r93658 = r93656 * r93657;
double r93659 = r93655 * r93658;
double r93660 = r93659 / r93655;
double r93661 = 1.0;
double r93662 = b;
double r93663 = -r93662;
double r93664 = r93662 * r93662;
double r93665 = r93655 * r93656;
double r93666 = r93665 * r93657;
double r93667 = r93664 - r93666;
double r93668 = sqrt(r93667);
double r93669 = r93663 - r93668;
double r93670 = r93661 / r93669;
double r93671 = r93670 / r93656;
double r93672 = r93660 * r93671;
return r93672;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.9
rmApplied flip-+44.0
Simplified0.5
rmApplied div-inv0.6
Applied times-frac0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020003
(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)))