Average Error: 33.8 → 9.4
Time: 18.8s
Precision: 64
\[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
\[\begin{array}{l} \mathbf{if}\;b_2 \le -0.03099989563658142946445117615894560003653:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 5.992812285264992608677553115821113751089 \cdot 10^{-289}:\\ \;\;\;\;\frac{\frac{c \cdot a}{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 63580190853209333432320:\\ \;\;\;\;\frac{\mathsf{fma}\left(\left(-\sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}, \sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - c \cdot a}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\ \end{array}\]
\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}
\begin{array}{l}
\mathbf{if}\;b_2 \le -0.03099989563658142946445117615894560003653:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le 5.992812285264992608677553115821113751089 \cdot 10^{-289}:\\
\;\;\;\;\frac{\frac{c \cdot a}{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}}{a}\\

\mathbf{elif}\;b_2 \le 63580190853209333432320:\\
\;\;\;\;\frac{\mathsf{fma}\left(\left(-\sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}, \sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - c \cdot a}\right)}{a}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\

\end{array}
double f(double a, double b_2, double c) {
        double r720410 = b_2;
        double r720411 = -r720410;
        double r720412 = r720410 * r720410;
        double r720413 = a;
        double r720414 = c;
        double r720415 = r720413 * r720414;
        double r720416 = r720412 - r720415;
        double r720417 = sqrt(r720416);
        double r720418 = r720411 - r720417;
        double r720419 = r720418 / r720413;
        return r720419;
}

double f(double a, double b_2, double c) {
        double r720420 = b_2;
        double r720421 = -0.03099989563658143;
        bool r720422 = r720420 <= r720421;
        double r720423 = -0.5;
        double r720424 = c;
        double r720425 = r720424 / r720420;
        double r720426 = r720423 * r720425;
        double r720427 = 5.992812285264993e-289;
        bool r720428 = r720420 <= r720427;
        double r720429 = a;
        double r720430 = r720424 * r720429;
        double r720431 = r720420 * r720420;
        double r720432 = r720431 - r720430;
        double r720433 = sqrt(r720432);
        double r720434 = r720433 - r720420;
        double r720435 = r720430 / r720434;
        double r720436 = r720435 / r720429;
        double r720437 = 6.358019085320933e+22;
        bool r720438 = r720420 <= r720437;
        double r720439 = cbrt(r720420);
        double r720440 = -r720439;
        double r720441 = r720440 * r720439;
        double r720442 = -r720433;
        double r720443 = fma(r720441, r720439, r720442);
        double r720444 = r720443 / r720429;
        double r720445 = r720420 / r720429;
        double r720446 = -2.0;
        double r720447 = 0.5;
        double r720448 = r720420 / r720424;
        double r720449 = r720447 / r720448;
        double r720450 = fma(r720445, r720446, r720449);
        double r720451 = r720438 ? r720444 : r720450;
        double r720452 = r720428 ? r720436 : r720451;
        double r720453 = r720422 ? r720426 : r720452;
        return r720453;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 4 regimes
  2. if b_2 < -0.03099989563658143

    1. Initial program 55.6

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Taylor expanded around -inf 6.4

      \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{c}{b_2}}\]

    if -0.03099989563658143 < b_2 < 5.992812285264993e-289

    1. Initial program 24.4

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied flip--24.4

      \[\leadsto \frac{\color{blue}{\frac{\left(-b_2\right) \cdot \left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c} \cdot \sqrt{b_2 \cdot b_2 - a \cdot c}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}}}{a}\]
    4. Simplified16.6

      \[\leadsto \frac{\frac{\color{blue}{0 + a \cdot c}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    5. Simplified16.6

      \[\leadsto \frac{\frac{0 + a \cdot c}{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{a}\]

    if 5.992812285264993e-289 < b_2 < 6.358019085320933e+22

    1. Initial program 10.0

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt10.3

      \[\leadsto \frac{\left(-\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}}\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied distribute-lft-neg-in10.3

      \[\leadsto \frac{\color{blue}{\left(-\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}} - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    5. Applied fma-neg10.3

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(-\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}, \sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]

    if 6.358019085320933e+22 < b_2

    1. Initial program 33.1

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Taylor expanded around inf 6.1

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}}\]
    3. Simplified6.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification9.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -0.03099989563658142946445117615894560003653:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 5.992812285264992608677553115821113751089 \cdot 10^{-289}:\\ \;\;\;\;\frac{\frac{c \cdot a}{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 63580190853209333432320:\\ \;\;\;\;\frac{\mathsf{fma}\left(\left(-\sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}, \sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - c \cdot a}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019192 +o rules:numerics
(FPCore (a b_2 c)
  :name "quad2m (problem 3.2.1, negative)"
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))