double f(double a, double b, double c) {
double r871000 = b;
double r871001 = -r871000;
double r871002 = r871000 * r871000;
double r871003 = 4.0;
double r871004 = a;
double r871005 = c;
double r871006 = r871004 * r871005;
double r871007 = r871003 * r871006;
double r871008 = r871002 - r871007;
double r871009 = sqrt(r871008);
double r871010 = r871001 - r871009;
double r871011 = 2.0;
double r871012 = r871011 * r871004;
double r871013 = r871010 / r871012;
return r871013;
}
double f(double a, double b, double c) {
double r871014 = b;
double r871015 = -r871014;
double r871016 = r871014 * r871014;
double r871017 = 4.0;
double r871018 = a;
double r871019 = r871017 * r871018;
double r871020 = c;
double r871021 = r871019 * r871020;
double r871022 = r871016 - r871021;
double r871023 = sqrt(r871022);
double r871024 = r871015 - r871023;
double r871025 = 2.0;
double r871026 = r871018 * r871025;
double r871027 = r871024 / r871026;
return r871027;
}
\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{a \cdot 2}


Bits error versus a



Bits error versus b



Bits error versus c
Initial program 1.5
rmApplied associate-/r*1.5
rmApplied associate-*r*1.5
rmApplied associate-/l/1.5
Final simplification1.5
herbie shell --seed 2019101 +o rules:numerics
(FPCore (a b c)
:name "quadm (p42, negative)"
(/.p16 (-.p16 (neg.p16 b) (sqrt.p16 (-.p16 (*.p16 b b) (*.p16 (real->posit16 4) (*.p16 a c))))) (*.p16 (real->posit16 2) a)))