\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{(\left(\sqrt{\sqrt{{\left((c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*\right)}^{\frac{1}{3}} \cdot \sqrt[3]{(\left(c \cdot -4\right) \cdot a + \left(b \cdot b\right))_* \cdot (\left(c \cdot -4\right) \cdot a + \left(b \cdot b\right))_*}}}\right) \cdot \left(\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2}}{a}double f(double a, double b, double c) {
double r2439223 = b;
double r2439224 = -r2439223;
double r2439225 = r2439223 * r2439223;
double r2439226 = 4.0;
double r2439227 = a;
double r2439228 = r2439226 * r2439227;
double r2439229 = c;
double r2439230 = r2439228 * r2439229;
double r2439231 = r2439225 - r2439230;
double r2439232 = sqrt(r2439231);
double r2439233 = r2439224 + r2439232;
double r2439234 = 2.0;
double r2439235 = r2439234 * r2439227;
double r2439236 = r2439233 / r2439235;
return r2439236;
}
double f(double a, double b, double c) {
double r2439237 = c;
double r2439238 = a;
double r2439239 = -4.0;
double r2439240 = r2439238 * r2439239;
double r2439241 = b;
double r2439242 = r2439241 * r2439241;
double r2439243 = fma(r2439237, r2439240, r2439242);
double r2439244 = 0.3333333333333333;
double r2439245 = pow(r2439243, r2439244);
double r2439246 = r2439237 * r2439239;
double r2439247 = fma(r2439246, r2439238, r2439242);
double r2439248 = r2439247 * r2439247;
double r2439249 = cbrt(r2439248);
double r2439250 = r2439245 * r2439249;
double r2439251 = sqrt(r2439250);
double r2439252 = sqrt(r2439251);
double r2439253 = sqrt(r2439243);
double r2439254 = sqrt(r2439253);
double r2439255 = -r2439241;
double r2439256 = fma(r2439252, r2439254, r2439255);
double r2439257 = 2.0;
double r2439258 = r2439256 / r2439257;
double r2439259 = r2439258 / r2439238;
return r2439259;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 52.7
Simplified52.7
rmApplied add-sqr-sqrt52.4
Applied fma-neg51.8
rmApplied add-cbrt-cube51.9
rmApplied pow1/351.3
rmApplied unpow-prod-down51.3
Simplified50.9
Final simplification50.9
herbie shell --seed 2019119 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))