Average Error: 34.0 → 10.6
Time: 17.4s
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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.875629862348269923009864799258754597338 \cdot 10^{107}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{-b_2} \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{c}{b_2}, \frac{1}{2}, \frac{-2 \cdot b_2}{a}\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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le 2.875629862348269923009864799258754597338 \cdot 10^{107}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{-b_2} \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{c}{b_2}, \frac{1}{2}, \frac{-2 \cdot b_2}{a}\right)\\

\end{array}
double f(double a, double b_2, double c) {
        double r2988520 = b_2;
        double r2988521 = -r2988520;
        double r2988522 = r2988520 * r2988520;
        double r2988523 = a;
        double r2988524 = c;
        double r2988525 = r2988523 * r2988524;
        double r2988526 = r2988522 - r2988525;
        double r2988527 = sqrt(r2988526);
        double r2988528 = r2988521 - r2988527;
        double r2988529 = r2988528 / r2988523;
        return r2988529;
}

double f(double a, double b_2, double c) {
        double r2988530 = b_2;
        double r2988531 = -9.332433396832084e-58;
        bool r2988532 = r2988530 <= r2988531;
        double r2988533 = -0.5;
        double r2988534 = c;
        double r2988535 = r2988534 / r2988530;
        double r2988536 = r2988533 * r2988535;
        double r2988537 = 2.87562986234827e+107;
        bool r2988538 = r2988530 <= r2988537;
        double r2988539 = -r2988530;
        double r2988540 = cbrt(r2988539);
        double r2988541 = r2988540 * r2988540;
        double r2988542 = r2988530 * r2988530;
        double r2988543 = a;
        double r2988544 = r2988534 * r2988543;
        double r2988545 = r2988542 - r2988544;
        double r2988546 = sqrt(r2988545);
        double r2988547 = -r2988546;
        double r2988548 = fma(r2988541, r2988540, r2988547);
        double r2988549 = r2988548 / r2988543;
        double r2988550 = 0.5;
        double r2988551 = -2.0;
        double r2988552 = r2988551 * r2988530;
        double r2988553 = r2988552 / r2988543;
        double r2988554 = fma(r2988535, r2988550, r2988553);
        double r2988555 = r2988538 ? r2988549 : r2988554;
        double r2988556 = r2988532 ? r2988536 : r2988555;
        return r2988556;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 3 regimes
  2. if b_2 < -9.332433396832084e-58

    1. Initial program 53.5

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

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

    if -9.332433396832084e-58 < b_2 < 2.87562986234827e+107

    1. Initial program 14.0

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

      \[\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}\]
    4. Applied fma-neg14.2

      \[\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 2.87562986234827e+107 < b_2

    1. Initial program 49.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.875629862348269923009864799258754597338 \cdot 10^{107}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{-b_2} \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{c}{b_2}, \frac{1}{2}, \frac{-2 \cdot b_2}{a}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019171 +o rules:numerics
(FPCore (a b_2 c)
  :name "NMSE problem 3.2.1"
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))