\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{c \cdot 4}{1}}{\left(-b\right) - \frac{\sqrt{{\left(b \cdot b\right)}^{3} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}}{\sqrt{\left(b \cdot b\right) \cdot \left(b \cdot b\right) + \left(\left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c\right) + \left(b \cdot b\right) \cdot \left(\left(4 \cdot a\right) \cdot c\right)\right)}}}double f(double a, double b, double c) {
double r34982 = b;
double r34983 = -r34982;
double r34984 = r34982 * r34982;
double r34985 = 4.0;
double r34986 = a;
double r34987 = r34985 * r34986;
double r34988 = c;
double r34989 = r34987 * r34988;
double r34990 = r34984 - r34989;
double r34991 = sqrt(r34990);
double r34992 = r34983 + r34991;
double r34993 = 2.0;
double r34994 = r34993 * r34986;
double r34995 = r34992 / r34994;
return r34995;
}
double f(double a, double b, double c) {
double r34996 = 1.0;
double r34997 = 2.0;
double r34998 = r34996 / r34997;
double r34999 = c;
double r35000 = 4.0;
double r35001 = r34999 * r35000;
double r35002 = r35001 / r34996;
double r35003 = b;
double r35004 = -r35003;
double r35005 = r35003 * r35003;
double r35006 = 3.0;
double r35007 = pow(r35005, r35006);
double r35008 = a;
double r35009 = r35000 * r35008;
double r35010 = r35009 * r34999;
double r35011 = pow(r35010, r35006);
double r35012 = r35007 - r35011;
double r35013 = sqrt(r35012);
double r35014 = r35005 * r35005;
double r35015 = r35010 * r35010;
double r35016 = r35005 * r35010;
double r35017 = r35015 + r35016;
double r35018 = r35014 + r35017;
double r35019 = sqrt(r35018);
double r35020 = r35013 / r35019;
double r35021 = r35004 - r35020;
double r35022 = r35002 / r35021;
double r35023 = r34998 * r35022;
return r35023;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.4
rmApplied flip-+52.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
rmApplied associate-/r*0.2
Simplified0.1
rmApplied flip3--0.1
Applied sqrt-div0.2
Final simplification0.2
herbie shell --seed 2019353 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))