Average Error: 1.5 → 1.5
Time: 19.9s
Precision: 64
\[\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}\]
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}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Initial program 1.5

    \[\frac{\left(\left(-b\right) - \left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)\right)}{\left(\left(2\right) \cdot a\right)}\]
  2. Using strategy rm
  3. Applied associate-/r*1.5

    \[\leadsto \color{blue}{\frac{\left(\frac{\left(\left(-b\right) - \left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)\right)}{\left(2\right)}\right)}{a}}\]
  4. Using strategy rm
  5. Applied associate-*r*1.5

    \[\leadsto \frac{\left(\frac{\left(\left(-b\right) - \left(\sqrt{\left(\left(b \cdot b\right) - \color{blue}{\left(\left(\left(4\right) \cdot a\right) \cdot c\right)}\right)}\right)\right)}{\left(2\right)}\right)}{a}\]
  6. Using strategy rm
  7. Applied associate-/l/1.5

    \[\leadsto \color{blue}{\frac{\left(\left(-b\right) - \left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(\left(4\right) \cdot a\right) \cdot c\right)\right)}\right)\right)}{\left(a \cdot \left(2\right)\right)}}\]
  8. Final simplification1.5

    \[\leadsto \frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{a \cdot 2}\]

Reproduce

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)))