Average Error: 1.6 → 0.6
Time: 21.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)}\]
\[\begin{array}{l} \mathbf{if}\;b \le -0.3565673828125:\\ \;\;\;\;\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + 4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\ \end{array}\]
\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)}
\begin{array}{l}
\mathbf{if}\;b \le -0.3565673828125:\\
\;\;\;\;\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + 4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\

\end{array}
double f(double a, double b, double c) {
        double r872556 = b;
        double r872557 = -r872556;
        double r872558 = r872556 * r872556;
        double r872559 = 4.0;
        double r872560 = /* ERROR: no posit support in C */;
        double r872561 = a;
        double r872562 = c;
        double r872563 = r872561 * r872562;
        double r872564 = r872560 * r872563;
        double r872565 = r872558 - r872564;
        double r872566 = sqrt(r872565);
        double r872567 = r872557 - r872566;
        double r872568 = 2.0;
        double r872569 = /* ERROR: no posit support in C */;
        double r872570 = r872569 * r872561;
        double r872571 = r872567 / r872570;
        return r872571;
}

double f(double a, double b, double c) {
        double r872572 = b;
        double r872573 = -0.3565673828125;
        bool r872574 = r872572 <= r872573;
        double r872575 = -r872572;
        double r872576 = r872575 + r872572;
        double r872577 = r872575 + r872575;
        double r872578 = r872576 * r872577;
        double r872579 = 4.0;
        double r872580 = a;
        double r872581 = c;
        double r872582 = r872580 * r872581;
        double r872583 = r872579 * r872582;
        double r872584 = r872578 + r872583;
        double r872585 = 2.0;
        double r872586 = r872585 * r872580;
        double r872587 = r872572 * r872572;
        double r872588 = r872587 - r872583;
        double r872589 = sqrt(r872588);
        double r872590 = r872575 + r872589;
        double r872591 = r872586 * r872590;
        double r872592 = r872584 / r872591;
        double r872593 = r872575 - r872589;
        double r872594 = r872593 / r872585;
        double r872595 = r872594 / r872580;
        double r872596 = r872574 ? r872592 : r872595;
        return r872596;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 2 regimes
  2. if b < -0.3565673828125

    1. Initial program 3.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--3.1

      \[\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/3.2

      \[\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. Simplified0.9

      \[\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)}\]

    if -0.3565673828125 < b

    1. Initial program 0.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*0.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}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -0.3565673828125:\\ \;\;\;\;\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + 4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\ \end{array}\]

Reproduce

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