Average Error: 1.5 → 1.5
Time: 20.8s
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 r871050 = b;
        double r871051 = -r871050;
        double r871052 = r871050 * r871050;
        double r871053 = 4.0;
        double r871054 = /* ERROR: no posit support in C */;
        double r871055 = a;
        double r871056 = c;
        double r871057 = r871055 * r871056;
        double r871058 = r871054 * r871057;
        double r871059 = r871052 - r871058;
        double r871060 = sqrt(r871059);
        double r871061 = r871051 - r871060;
        double r871062 = 2.0;
        double r871063 = /* ERROR: no posit support in C */;
        double r871064 = r871063 * r871055;
        double r871065 = r871061 / r871064;
        return r871065;
}

double f(double a, double b, double c) {
        double r871066 = b;
        double r871067 = -r871066;
        double r871068 = r871066 * r871066;
        double r871069 = 4.0;
        double r871070 = a;
        double r871071 = c;
        double r871072 = r871070 * r871071;
        double r871073 = r871069 * r871072;
        double r871074 = r871068 - r871073;
        double r871075 = sqrt(r871074);
        double r871076 = r871067 - r871075;
        double r871077 = 2.0;
        double r871078 = r871076 / r871077;
        double r871079 = r871078 / r871070;
        return r871079;
}

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