\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{4 \cdot \frac{c}{\frac{a}{a}}}{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, \left(-4\right) \cdot \left(c \cdot a\right)\right)}}double f(double a, double b, double c) {
double r41190 = b;
double r41191 = -r41190;
double r41192 = r41190 * r41190;
double r41193 = 4.0;
double r41194 = a;
double r41195 = r41193 * r41194;
double r41196 = c;
double r41197 = r41195 * r41196;
double r41198 = r41192 - r41197;
double r41199 = sqrt(r41198);
double r41200 = r41191 + r41199;
double r41201 = 2.0;
double r41202 = r41201 * r41194;
double r41203 = r41200 / r41202;
return r41203;
}
double f(double a, double b, double c) {
double r41204 = 1.0;
double r41205 = 2.0;
double r41206 = r41204 / r41205;
double r41207 = 4.0;
double r41208 = c;
double r41209 = a;
double r41210 = r41209 / r41209;
double r41211 = r41208 / r41210;
double r41212 = r41207 * r41211;
double r41213 = b;
double r41214 = -r41213;
double r41215 = -r41207;
double r41216 = r41208 * r41209;
double r41217 = r41215 * r41216;
double r41218 = fma(r41213, r41213, r41217);
double r41219 = sqrt(r41218);
double r41220 = r41214 - r41219;
double r41221 = r41212 / r41220;
double r41222 = r41206 * r41221;
return r41222;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 28.7
rmApplied flip-+28.7
Simplified0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied associate-*l*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019195 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, 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) (* (* 4.0 a) c)))) (* 2.0 a)))