Average Error: 1.5 → 1.5
Time: 21.5s
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 r738970 = b;
        double r738971 = -r738970;
        double r738972 = r738970 * r738970;
        double r738973 = 4.0;
        double r738974 = /* ERROR: no posit support in C */;
        double r738975 = a;
        double r738976 = c;
        double r738977 = r738975 * r738976;
        double r738978 = r738974 * r738977;
        double r738979 = r738972 - r738978;
        double r738980 = sqrt(r738979);
        double r738981 = r738971 - r738980;
        double r738982 = 2.0;
        double r738983 = /* ERROR: no posit support in C */;
        double r738984 = r738983 * r738975;
        double r738985 = r738981 / r738984;
        return r738985;
}

double f(double a, double b, double c) {
        double r738986 = b;
        double r738987 = -r738986;
        double r738988 = r738986 * r738986;
        double r738989 = 4.0;
        double r738990 = a;
        double r738991 = c;
        double r738992 = r738990 * r738991;
        double r738993 = r738989 * r738992;
        double r738994 = r738988 - r738993;
        double r738995 = sqrt(r738994);
        double r738996 = r738987 - r738995;
        double r738997 = 2.0;
        double r738998 = r738996 / r738997;
        double r738999 = r738998 / r738990;
        return r738999;
}

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