Average Error: 1.5 → 0.6
Time: 23.6s
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.0042572021484375:\\ \;\;\;\;\frac{\frac{\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + 4 \cdot \left(a \cdot c\right)}{2}}{a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot 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.0042572021484375:\\
\;\;\;\;\frac{\frac{\frac{\left(\left(-b\right) + b\right) \cdot \left(\left(-b\right) + \left(-b\right)\right) + 4 \cdot \left(a \cdot c\right)}{2}}{a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\

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

\end{array}
double f(double a, double b, double c) {
        double r829116 = b;
        double r829117 = -r829116;
        double r829118 = r829116 * r829116;
        double r829119 = 4.0;
        double r829120 = /* ERROR: no posit support in C */;
        double r829121 = a;
        double r829122 = c;
        double r829123 = r829121 * r829122;
        double r829124 = r829120 * r829123;
        double r829125 = r829118 - r829124;
        double r829126 = sqrt(r829125);
        double r829127 = r829117 - r829126;
        double r829128 = 2.0;
        double r829129 = /* ERROR: no posit support in C */;
        double r829130 = r829129 * r829121;
        double r829131 = r829127 / r829130;
        return r829131;
}

double f(double a, double b, double c) {
        double r829132 = b;
        double r829133 = -0.0042572021484375;
        bool r829134 = r829132 <= r829133;
        double r829135 = -r829132;
        double r829136 = r829135 + r829132;
        double r829137 = r829135 + r829135;
        double r829138 = r829136 * r829137;
        double r829139 = 4.0;
        double r829140 = a;
        double r829141 = c;
        double r829142 = r829140 * r829141;
        double r829143 = r829139 * r829142;
        double r829144 = r829138 + r829143;
        double r829145 = 2.0;
        double r829146 = r829144 / r829145;
        double r829147 = r829146 / r829140;
        double r829148 = r829132 * r829132;
        double r829149 = r829148 - r829143;
        double r829150 = sqrt(r829149);
        double r829151 = r829135 + r829150;
        double r829152 = r829147 / r829151;
        double r829153 = r829139 * r829140;
        double r829154 = r829153 * r829141;
        double r829155 = r829148 - r829154;
        double r829156 = sqrt(r829155);
        double r829157 = r829135 - r829156;
        double r829158 = r829145 * r829140;
        double r829159 = r829157 / r829158;
        double r829160 = r829134 ? r829152 : r829159;
        return r829160;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

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

    1. Initial program 2.6

      \[\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.3

      \[\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.3

      \[\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.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*0.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*0.6

      \[\leadsto \frac{\color{blue}{\left(\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(2\right)}\right)}{a}\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)}\]

    if -0.0042572021484375 < 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 \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)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.6

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

Reproduce

herbie shell --seed 2019112 +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)))