Average Error: 1.5 → 1.7
Time: 22.9s
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(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + \left(4 \cdot a\right) \cdot c}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\]
\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(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + \left(4 \cdot a\right) \cdot c}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}
double f(double a, double b, double c) {
        double r815744 = b;
        double r815745 = -r815744;
        double r815746 = r815744 * r815744;
        double r815747 = 4.0;
        double r815748 = /* ERROR: no posit support in C */;
        double r815749 = a;
        double r815750 = c;
        double r815751 = r815749 * r815750;
        double r815752 = r815748 * r815751;
        double r815753 = r815746 - r815752;
        double r815754 = sqrt(r815753);
        double r815755 = r815745 - r815754;
        double r815756 = 2.0;
        double r815757 = /* ERROR: no posit support in C */;
        double r815758 = r815757 * r815749;
        double r815759 = r815755 / r815758;
        return r815759;
}

double f(double a, double b, double c) {
        double r815760 = b;
        double r815761 = -r815760;
        double r815762 = r815761 + r815760;
        double r815763 = r815761 + r815761;
        double r815764 = r815762 * r815763;
        double r815765 = 4.0;
        double r815766 = a;
        double r815767 = r815765 * r815766;
        double r815768 = c;
        double r815769 = r815767 * r815768;
        double r815770 = r815764 + r815769;
        double r815771 = 2.0;
        double r815772 = r815771 * r815766;
        double r815773 = r815770 / r815772;
        double r815774 = r815760 * r815760;
        double r815775 = r815774 - r815769;
        double r815776 = sqrt(r815775);
        double r815777 = r815761 + r815776;
        double r815778 = r815773 / r815777;
        return r815778;
}

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 p16-flip--2.5

    \[\leadsto \frac{\color{blue}{\left(\frac{\left(\left(\left(-b\right) \cdot \left(-b\right)\right) - \left(\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right) \cdot \left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)\right)\right)}{\left(\frac{\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)}\right)}}{\left(\left(2\right) \cdot a\right)}\]
  4. Applied associate-/l/2.6

    \[\leadsto \color{blue}{\frac{\left(\left(\left(-b\right) \cdot \left(-b\right)\right) - \left(\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right) \cdot \left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)\right)\right)}{\left(\left(\left(2\right) \cdot a\right) \cdot \left(\frac{\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)\right)}}\]
  5. Simplified1.8

    \[\leadsto \frac{\color{blue}{\left(\frac{\left(\left(\frac{\left(-b\right)}{b}\right) \cdot \left(\frac{\left(-b\right)}{\left(-b\right)}\right)\right)}{\left(\left(4\right) \cdot \left(a \cdot c\right)\right)}\right)}}{\left(\left(\left(2\right) \cdot a\right) \cdot \left(\frac{\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)\right)}\]
  6. Using strategy rm
  7. Applied associate-/r*1.7

    \[\leadsto \color{blue}{\frac{\left(\frac{\left(\frac{\left(\left(\frac{\left(-b\right)}{b}\right) \cdot \left(\frac{\left(-b\right)}{\left(-b\right)}\right)\right)}{\left(\left(4\right) \cdot \left(a \cdot c\right)\right)}\right)}{\left(\left(2\right) \cdot a\right)}\right)}{\left(\frac{\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)}}\]
  8. Using strategy rm
  9. Applied associate-*r*1.7

    \[\leadsto \frac{\left(\frac{\left(\frac{\left(\left(\frac{\left(-b\right)}{b}\right) \cdot \left(\frac{\left(-b\right)}{\left(-b\right)}\right)\right)}{\color{blue}{\left(\left(\left(4\right) \cdot a\right) \cdot c\right)}}\right)}{\left(\left(2\right) \cdot a\right)}\right)}{\left(\frac{\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)}\]
  10. Using strategy rm
  11. Applied associate-*r*1.7

    \[\leadsto \frac{\left(\frac{\left(\frac{\left(\left(\frac{\left(-b\right)}{b}\right) \cdot \left(\frac{\left(-b\right)}{\left(-b\right)}\right)\right)}{\left(\left(\left(4\right) \cdot a\right) \cdot c\right)}\right)}{\left(\left(2\right) \cdot a\right)}\right)}{\left(\frac{\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)}\]
  12. Final simplification1.7

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

Reproduce

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