\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{c \cdot \left(4 \cdot a\right)}{2 \cdot \left(a \cdot \left(0 \cdot \sqrt{\mathsf{fma}\left(b, b, -c \cdot \left(4 \cdot a\right)\right)} + \mathsf{fma}\left(\sqrt{b}, -\sqrt{b}, -\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)\right)\right)}double f(double a, double b, double c) {
double r43203 = b;
double r43204 = -r43203;
double r43205 = r43203 * r43203;
double r43206 = 4.0;
double r43207 = a;
double r43208 = r43206 * r43207;
double r43209 = c;
double r43210 = r43208 * r43209;
double r43211 = r43205 - r43210;
double r43212 = sqrt(r43211);
double r43213 = r43204 + r43212;
double r43214 = 2.0;
double r43215 = r43214 * r43207;
double r43216 = r43213 / r43215;
return r43216;
}
double f(double a, double b, double c) {
double r43217 = c;
double r43218 = 4.0;
double r43219 = a;
double r43220 = r43218 * r43219;
double r43221 = r43217 * r43220;
double r43222 = 2.0;
double r43223 = 0.0;
double r43224 = b;
double r43225 = -r43221;
double r43226 = fma(r43224, r43224, r43225);
double r43227 = sqrt(r43226);
double r43228 = r43223 * r43227;
double r43229 = sqrt(r43224);
double r43230 = -r43229;
double r43231 = r43224 * r43224;
double r43232 = r43220 * r43217;
double r43233 = r43231 - r43232;
double r43234 = sqrt(r43233);
double r43235 = -r43234;
double r43236 = fma(r43229, r43230, r43235);
double r43237 = r43228 + r43236;
double r43238 = r43219 * r43237;
double r43239 = r43222 * r43238;
double r43240 = r43221 / r43239;
return r43240;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 28.4
rmApplied flip-+28.4
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
rmApplied add-cube-cbrt0.9
Applied add-sqr-sqrt0.9
Applied distribute-lft-neg-in0.9
Applied prod-diff0.9
Simplified0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019305 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))