Average Error: 1.5 → 0.5
Time: 32.7s
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.1453857421875:\\ \;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4\right)}{2 \cdot a}}{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)} - b}\\ \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.1453857421875:\\
\;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4\right)}{2 \cdot a}}{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)} - b}\\

\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 r2034341 = b;
        double r2034342 = -r2034341;
        double r2034343 = r2034341 * r2034341;
        double r2034344 = 4.0;
        double r2034345 = /* ERROR: no posit support in C */;
        double r2034346 = a;
        double r2034347 = c;
        double r2034348 = r2034346 * r2034347;
        double r2034349 = r2034345 * r2034348;
        double r2034350 = r2034343 - r2034349;
        double r2034351 = sqrt(r2034350);
        double r2034352 = r2034342 - r2034351;
        double r2034353 = 2.0;
        double r2034354 = /* ERROR: no posit support in C */;
        double r2034355 = r2034354 * r2034346;
        double r2034356 = r2034352 / r2034355;
        return r2034356;
}

double f(double a, double b, double c) {
        double r2034357 = b;
        double r2034358 = -0.1453857421875;
        bool r2034359 = r2034357 <= r2034358;
        double r2034360 = c;
        double r2034361 = a;
        double r2034362 = 4.0;
        double r2034363 = r2034361 * r2034362;
        double r2034364 = r2034360 * r2034363;
        double r2034365 = 2.0;
        double r2034366 = r2034365 * r2034361;
        double r2034367 = r2034364 / r2034366;
        double r2034368 = r2034357 * r2034357;
        double r2034369 = r2034368 - r2034364;
        double r2034370 = sqrt(r2034369);
        double r2034371 = r2034370 - r2034357;
        double r2034372 = r2034367 / r2034371;
        double r2034373 = -r2034357;
        double r2034374 = r2034361 * r2034360;
        double r2034375 = r2034362 * r2034374;
        double r2034376 = r2034368 - r2034375;
        double r2034377 = sqrt(r2034376);
        double r2034378 = r2034373 - r2034377;
        double r2034379 = r2034378 / r2034365;
        double r2034380 = r2034379 / r2034361;
        double r2034381 = r2034359 ? r2034372 : r2034380;
        return r2034381;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

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

    1. Initial program 3.1

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

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

      \[\leadsto \frac{\left(\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(\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)}\]
    5. Using strategy rm
    6. Applied associate-/r*0.8

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

      \[\leadsto \frac{\color{blue}{\left(\frac{\left(\frac{\left(0.0\right)}{\left(\left(4\right) \cdot \left(c \cdot a\right)\right)}\right)}{\left(\left(2\right) \cdot \left(\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(c \cdot a\right)\right)\right)}\right) - b\right)\right)}\right)}}{a}\]
    8. Simplified0.8

      \[\leadsto \color{blue}{\frac{\left(c \cdot \left(a \cdot \left(4\right)\right)\right)}{\left(\left(\left(2\right) \cdot a\right) \cdot \left(\left(\sqrt{\left(\left(b \cdot b\right) - \left(c \cdot \left(a \cdot \left(4\right)\right)\right)\right)}\right) - b\right)\right)}}\]
    9. Using strategy rm
    10. Applied associate-/r*0.6

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

    if -0.1453857421875 < 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.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -0.1453857421875:\\ \;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4\right)}{2 \cdot a}}{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)} - b}\\ \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 2019125 
(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)))