\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 r122144 = b;
double r122145 = -r122144;
double r122146 = r122144 * r122144;
double r122147 = 3.0;
double r122148 = a;
double r122149 = r122147 * r122148;
double r122150 = c;
double r122151 = r122149 * r122150;
double r122152 = r122146 - r122151;
double r122153 = sqrt(r122152);
double r122154 = r122145 + r122153;
double r122155 = r122154 / r122149;
return r122155;
}
double f(double a, double b, double c) {
double r122156 = b;
double r122157 = 2.0;
double r122158 = pow(r122156, r122157);
double r122159 = r122158 - r122158;
double r122160 = 3.0;
double r122161 = a;
double r122162 = r122160 * r122161;
double r122163 = c;
double r122164 = r122162 * r122163;
double r122165 = r122159 + r122164;
double r122166 = -r122156;
double r122167 = r122156 * r122156;
double r122168 = r122167 - r122164;
double r122169 = sqrt(r122168);
double r122170 = r122166 - r122169;
double r122171 = r122165 / r122170;
double r122172 = r122171 / r122162;
return r122172;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.7
rmApplied flip-+52.7
Simplified0.5
rmApplied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2020001
(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)))