Average Error: 1.5 → 1.5
Time: 27.1s
Precision: 64
\[\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)}\]
\[\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\]
\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)}
\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}
double f(double a, double b, double c) {
        double r1800229 = b;
        double r1800230 = -r1800229;
        double r1800231 = r1800229 * r1800229;
        double r1800232 = 4.0;
        double r1800233 = /* ERROR: no posit support in C */;
        double r1800234 = a;
        double r1800235 = c;
        double r1800236 = r1800234 * r1800235;
        double r1800237 = r1800233 * r1800236;
        double r1800238 = r1800231 - r1800237;
        double r1800239 = sqrt(r1800238);
        double r1800240 = r1800230 - r1800239;
        double r1800241 = 2.0;
        double r1800242 = /* ERROR: no posit support in C */;
        double r1800243 = r1800242 * r1800234;
        double r1800244 = r1800240 / r1800243;
        return r1800244;
}

double f(double a, double b, double c) {
        double r1800245 = b;
        double r1800246 = -r1800245;
        double r1800247 = r1800245 * r1800245;
        double r1800248 = 4.0;
        double r1800249 = a;
        double r1800250 = c;
        double r1800251 = r1800249 * r1800250;
        double r1800252 = r1800248 * r1800251;
        double r1800253 = r1800247 - r1800252;
        double r1800254 = sqrt(r1800253);
        double r1800255 = r1800246 - r1800254;
        double r1800256 = 2.0;
        double r1800257 = r1800255 / r1800256;
        double r1800258 = r1800257 / r1800249;
        return r1800258;
}

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. Final simplification1.5

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

Reproduce

herbie shell --seed 2019134 
(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)))