\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\left(3 \cdot a\right) \cdot \frac{\frac{c}{\left(-b\right) - \sqrt{\mathsf{fma}\left(-c, 3 \cdot a, b \cdot b\right)}}}{3 \cdot a}double f(double a, double b, double c) {
double r102183 = b;
double r102184 = -r102183;
double r102185 = r102183 * r102183;
double r102186 = 3.0;
double r102187 = a;
double r102188 = r102186 * r102187;
double r102189 = c;
double r102190 = r102188 * r102189;
double r102191 = r102185 - r102190;
double r102192 = sqrt(r102191);
double r102193 = r102184 + r102192;
double r102194 = r102193 / r102188;
return r102194;
}
double f(double a, double b, double c) {
double r102195 = 3.0;
double r102196 = a;
double r102197 = r102195 * r102196;
double r102198 = c;
double r102199 = b;
double r102200 = -r102199;
double r102201 = -r102198;
double r102202 = r102199 * r102199;
double r102203 = fma(r102201, r102197, r102202);
double r102204 = sqrt(r102203);
double r102205 = r102200 - r102204;
double r102206 = r102198 / r102205;
double r102207 = r102206 / r102197;
double r102208 = r102197 * r102207;
return r102208;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 28.9
rmApplied flip-+28.9
Simplified0.6
Simplified0.6
rmApplied associate-/r*0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied times-frac0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2019196 +o rules:numerics
(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)))