Average Error: 33.3 → 9.1
Time: 20.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 -868804.7105499643:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.1921243675281261 \cdot 10^{-86}:\\ \;\;\;\;\left(\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2} \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right)\right) \cdot \sqrt[3]{\frac{1}{a}}\\ \mathbf{elif}\;b_2 \le 2.408727112940545 \cdot 10^{+124}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \left(\frac{c}{b_2}\right), \left(\frac{b_2 \cdot -2}{a}\right)\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 -868804.7105499643:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le -1.1921243675281261 \cdot 10^{-86}:\\
\;\;\;\;\left(\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2} \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right)\right) \cdot \sqrt[3]{\frac{1}{a}}\\

\mathbf{elif}\;b_2 \le 2.408727112940545 \cdot 10^{+124}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r508492 = b_2;
        double r508493 = -r508492;
        double r508494 = r508492 * r508492;
        double r508495 = a;
        double r508496 = c;
        double r508497 = r508495 * r508496;
        double r508498 = r508494 - r508497;
        double r508499 = sqrt(r508498);
        double r508500 = r508493 - r508499;
        double r508501 = r508500 / r508495;
        return r508501;
}

double f(double a, double b_2, double c) {
        double r508502 = b_2;
        double r508503 = -868804.7105499643;
        bool r508504 = r508502 <= r508503;
        double r508505 = -0.5;
        double r508506 = c;
        double r508507 = r508506 / r508502;
        double r508508 = r508505 * r508507;
        double r508509 = -1.1921243675281261e-86;
        bool r508510 = r508502 <= r508509;
        double r508511 = a;
        double r508512 = r508511 * r508506;
        double r508513 = r508502 * r508502;
        double r508514 = r508513 - r508513;
        double r508515 = r508512 + r508514;
        double r508516 = r508513 - r508512;
        double r508517 = sqrt(r508516);
        double r508518 = r508517 - r508502;
        double r508519 = r508515 / r508518;
        double r508520 = 1.0;
        double r508521 = r508520 / r508511;
        double r508522 = cbrt(r508521);
        double r508523 = r508522 * r508522;
        double r508524 = r508519 * r508523;
        double r508525 = r508524 * r508522;
        double r508526 = 2.408727112940545e+124;
        bool r508527 = r508502 <= r508526;
        double r508528 = -r508502;
        double r508529 = r508528 - r508517;
        double r508530 = r508529 / r508511;
        double r508531 = 0.5;
        double r508532 = -2.0;
        double r508533 = r508502 * r508532;
        double r508534 = r508533 / r508511;
        double r508535 = fma(r508531, r508507, r508534);
        double r508536 = r508527 ? r508530 : r508535;
        double r508537 = r508510 ? r508525 : r508536;
        double r508538 = r508504 ? r508508 : r508537;
        return r508538;
}

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 < -868804.7105499643

    1. Initial program 55.2

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

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

    if -868804.7105499643 < b_2 < -1.1921243675281261e-86

    1. Initial program 37.7

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

      \[\leadsto \frac{\left(-b_2\right) - \sqrt{\color{blue}{{b_2}^{2} - a \cdot c}}}{a}\]
    3. Simplified37.7

      \[\leadsto \frac{\left(-b_2\right) - \sqrt{\color{blue}{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    4. Using strategy rm
    5. Applied div-inv37.7

      \[\leadsto \color{blue}{\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt38.1

      \[\leadsto \left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \color{blue}{\left(\left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right) \cdot \sqrt[3]{\frac{1}{a}}\right)}\]
    8. Applied associate-*r*38.1

      \[\leadsto \color{blue}{\left(\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right)\right) \cdot \sqrt[3]{\frac{1}{a}}}\]
    9. Using strategy rm
    10. Applied flip--38.2

      \[\leadsto \left(\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}}} \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right)\right) \cdot \sqrt[3]{\frac{1}{a}}\]
    11. Simplified17.6

      \[\leadsto \left(\frac{\color{blue}{\left(b_2 \cdot b_2 - b_2 \cdot b_2\right) + a \cdot c}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}} \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right)\right) \cdot \sqrt[3]{\frac{1}{a}}\]
    12. Simplified17.6

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

    if -1.1921243675281261e-86 < b_2 < 2.408727112940545e+124

    1. Initial program 12.0

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

      \[\leadsto \frac{\left(-b_2\right) - \sqrt{\color{blue}{{b_2}^{2} - a \cdot c}}}{a}\]
    3. Simplified12.0

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

    if 2.408727112940545e+124 < b_2

    1. Initial program 50.3

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -868804.7105499643:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.1921243675281261 \cdot 10^{-86}:\\ \;\;\;\;\left(\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2} \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{1}{a}}\right)\right) \cdot \sqrt[3]{\frac{1}{a}}\\ \mathbf{elif}\;b_2 \le 2.408727112940545 \cdot 10^{+124}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \left(\frac{c}{b_2}\right), \left(\frac{b_2 \cdot -2}{a}\right)\right)\\ \end{array}\]

Reproduce

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