Average Error: 1.5 → 1.5
Time: 33.2s
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{1.0}{2} \cdot \frac{\left(-b\right) - \sqrt{\left(\mathsf{qms}\left(\left(\left(b \cdot b\right)\right), \left(4 \cdot a\right), c\right)\right)}}{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{1.0}{2} \cdot \frac{\left(-b\right) - \sqrt{\left(\mathsf{qms}\left(\left(\left(b \cdot b\right)\right), \left(4 \cdot a\right), c\right)\right)}}{a}
double f(double a, double b, double c) {
        double r1129401 = b;
        double r1129402 = -r1129401;
        double r1129403 = r1129401 * r1129401;
        double r1129404 = 4.0;
        double r1129405 = /* ERROR: no posit support in C */;
        double r1129406 = a;
        double r1129407 = c;
        double r1129408 = r1129406 * r1129407;
        double r1129409 = r1129405 * r1129408;
        double r1129410 = r1129403 - r1129409;
        double r1129411 = sqrt(r1129410);
        double r1129412 = r1129402 - r1129411;
        double r1129413 = 2.0;
        double r1129414 = /* ERROR: no posit support in C */;
        double r1129415 = r1129414 * r1129406;
        double r1129416 = r1129412 / r1129415;
        return r1129416;
}

double f(double a, double b, double c) {
        double r1129417 = 1.0;
        double r1129418 = 2.0;
        double r1129419 = r1129417 / r1129418;
        double r1129420 = b;
        double r1129421 = -r1129420;
        double r1129422 = r1129420 * r1129420;
        double r1129423 = /*Error: no posit support in C */;
        double r1129424 = 4.0;
        double r1129425 = a;
        double r1129426 = r1129424 * r1129425;
        double r1129427 = c;
        double r1129428 = /*Error: no posit support in C */;
        double r1129429 = /*Error: no posit support in C */;
        double r1129430 = sqrt(r1129429);
        double r1129431 = r1129421 - r1129430;
        double r1129432 = r1129431 / r1129425;
        double r1129433 = r1129419 * r1129432;
        return r1129433;
}

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 \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(\left(2\right) \cdot a\right)}\]
  4. Using strategy rm
  5. Applied introduce-quire1.5

    \[\leadsto \frac{\left(\left(-b\right) - \left(\sqrt{\left(\color{blue}{\left(\left(\left(b \cdot b\right)\right)\right)} - \left(\left(\left(4\right) \cdot a\right) \cdot c\right)\right)}\right)\right)}{\left(\left(2\right) \cdot a\right)}\]
  6. Applied insert-quire-fdp-sub1.5

    \[\leadsto \frac{\left(\left(-b\right) - \left(\sqrt{\color{blue}{\left(\left(\mathsf{qms}\left(\left(\left(b \cdot b\right)\right), \left(\left(4\right) \cdot a\right), c\right)\right)\right)}}\right)\right)}{\left(\left(2\right) \cdot a\right)}\]
  7. Using strategy rm
  8. Applied p16-*-un-lft-identity1.5

    \[\leadsto \frac{\left(\left(-b\right) - \color{blue}{\left(\left(1.0\right) \cdot \left(\sqrt{\left(\left(\mathsf{qms}\left(\left(\left(b \cdot b\right)\right), \left(\left(4\right) \cdot a\right), c\right)\right)\right)}\right)\right)}\right)}{\left(\left(2\right) \cdot a\right)}\]
  9. Applied p16-*-un-lft-identity1.5

    \[\leadsto \frac{\left(\color{blue}{\left(\left(1.0\right) \cdot \left(-b\right)\right)} - \left(\left(1.0\right) \cdot \left(\sqrt{\left(\left(\mathsf{qms}\left(\left(\left(b \cdot b\right)\right), \left(\left(4\right) \cdot a\right), c\right)\right)\right)}\right)\right)\right)}{\left(\left(2\right) \cdot a\right)}\]
  10. Applied distribute-lft-out--1.5

    \[\leadsto \frac{\color{blue}{\left(\left(1.0\right) \cdot \left(\left(-b\right) - \left(\sqrt{\left(\left(\mathsf{qms}\left(\left(\left(b \cdot b\right)\right), \left(\left(4\right) \cdot a\right), c\right)\right)\right)}\right)\right)\right)}}{\left(\left(2\right) \cdot a\right)}\]
  11. Applied p16-times-frac1.5

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

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

Reproduce

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