\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{\left({b}^{2} - {b}^{2}\right) + \left(3 \cdot a\right) \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{3 \cdot a}double f(double a, double b, double c) {
double r113641 = b;
double r113642 = -r113641;
double r113643 = r113641 * r113641;
double r113644 = 3.0;
double r113645 = a;
double r113646 = r113644 * r113645;
double r113647 = c;
double r113648 = r113646 * r113647;
double r113649 = r113643 - r113648;
double r113650 = sqrt(r113649);
double r113651 = r113642 + r113650;
double r113652 = r113651 / r113646;
return r113652;
}
double f(double a, double b, double c) {
double r113653 = b;
double r113654 = 2.0;
double r113655 = pow(r113653, r113654);
double r113656 = r113655 - r113655;
double r113657 = 3.0;
double r113658 = a;
double r113659 = r113657 * r113658;
double r113660 = c;
double r113661 = r113659 * r113660;
double r113662 = r113656 + r113661;
double r113663 = -r113653;
double r113664 = r113653 * r113653;
double r113665 = r113664 - r113661;
double r113666 = sqrt(r113665);
double r113667 = r113663 - r113666;
double r113668 = r113662 / r113667;
double r113669 = r113668 / r113659;
return r113669;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.6
rmApplied flip-+52.6
Simplified0.5
rmApplied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2020056
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))