\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)}}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r19999184 = b;
double r19999185 = -r19999184;
double r19999186 = r19999184 * r19999184;
double r19999187 = 3.0;
double r19999188 = a;
double r19999189 = r19999187 * r19999188;
double r19999190 = c;
double r19999191 = r19999189 * r19999190;
double r19999192 = r19999186 - r19999191;
double r19999193 = sqrt(r19999192);
double r19999194 = r19999185 + r19999193;
double r19999195 = r19999194 / r19999189;
return r19999195;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r19999196 = c;
double r19999197 = b;
double r19999198 = -r19999197;
double r19999199 = r19999197 * r19999197;
double r19999200 = 3.0;
double r19999201 = a;
double r19999202 = r19999200 * r19999201;
double r19999203 = r19999196 * r19999202;
double r19999204 = r19999199 - r19999203;
double r19999205 = sqrt(r19999204);
double r19999206 = r19999198 - r19999205;
double r19999207 = r19999196 / r19999206;
return r19999207;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Results
Initial program 44.0
rmApplied flip-+44.0
Applied associate-/l/44.0
Simplified0.5
rmApplied associate-/l*0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Simplified0.5
Simplified0.2
Taylor expanded around -inf 0.2
Final simplification0.2
herbie shell --seed 2019104 +o rules:numerics
(FPCore (a b c d)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))