\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left(3 \cdot a\right) \cdot c + \left(b \cdot b - b \cdot b\right)}{\left(b + \sqrt{\frac{{b}^{6} - {\left(\left(3 \cdot a\right) \cdot c\right)}^{3}}{{b}^{4} + \left(\left(3 \cdot a\right) \cdot c + b \cdot b\right) \cdot \left(\left(3 \cdot a\right) \cdot c\right)}}\right) \cdot \left(a \cdot \left(-3\right)\right)}double f(double a, double b, double c) {
double r91156 = b;
double r91157 = -r91156;
double r91158 = r91156 * r91156;
double r91159 = 3.0;
double r91160 = a;
double r91161 = r91159 * r91160;
double r91162 = c;
double r91163 = r91161 * r91162;
double r91164 = r91158 - r91163;
double r91165 = sqrt(r91164);
double r91166 = r91157 + r91165;
double r91167 = r91166 / r91161;
return r91167;
}
double f(double a, double b, double c) {
double r91168 = 3.0;
double r91169 = a;
double r91170 = r91168 * r91169;
double r91171 = c;
double r91172 = r91170 * r91171;
double r91173 = b;
double r91174 = r91173 * r91173;
double r91175 = r91174 - r91174;
double r91176 = r91172 + r91175;
double r91177 = 6.0;
double r91178 = pow(r91173, r91177);
double r91179 = 3.0;
double r91180 = pow(r91172, r91179);
double r91181 = r91178 - r91180;
double r91182 = 4.0;
double r91183 = pow(r91173, r91182);
double r91184 = r91172 + r91174;
double r91185 = r91184 * r91172;
double r91186 = r91183 + r91185;
double r91187 = r91181 / r91186;
double r91188 = sqrt(r91187);
double r91189 = r91173 + r91188;
double r91190 = -r91168;
double r91191 = r91169 * r91190;
double r91192 = r91189 * r91191;
double r91193 = r91176 / r91192;
return r91193;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.2
rmApplied flip-+28.2
Simplified0.6
Simplified0.6
rmApplied associate-*r*0.5
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.5
rmApplied flip3--0.5
Simplified0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019179
(FPCore (a b c)
:name "Cubic critical, narrow range"
: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.0 a) c)))) (* 3.0 a)))