Average Error: 18.9 → 6.6
Time: 1.5m
Precision: 64
\[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.6509659704621613 \cdot 10^{+43}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\ \end{array}\\ \mathbf{elif}\;b \le 7.356079352631206 \cdot 10^{+120}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \frac{c}{\sqrt{\sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*} - b}}\\ \end{array}\\ \mathbf{elif}\;b \ge 0:\\ \;\;\;\;\frac{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\ \end{array}\]
\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\

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

\end{array}
\begin{array}{l}
\mathbf{if}\;b \le -1.6509659704621613 \cdot 10^{+43}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}{a \cdot 2}\\

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

\end{array}\\

\mathbf{elif}\;b \le 7.356079352631206 \cdot 10^{+120}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*}}{a \cdot 2}\\

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

\end{array}\\

\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}{a \cdot 2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r2887451 = b;
        double r2887452 = 0.0;
        bool r2887453 = r2887451 >= r2887452;
        double r2887454 = -r2887451;
        double r2887455 = r2887451 * r2887451;
        double r2887456 = 4.0;
        double r2887457 = a;
        double r2887458 = r2887456 * r2887457;
        double r2887459 = c;
        double r2887460 = r2887458 * r2887459;
        double r2887461 = r2887455 - r2887460;
        double r2887462 = sqrt(r2887461);
        double r2887463 = r2887454 - r2887462;
        double r2887464 = 2.0;
        double r2887465 = r2887464 * r2887457;
        double r2887466 = r2887463 / r2887465;
        double r2887467 = r2887464 * r2887459;
        double r2887468 = r2887454 + r2887462;
        double r2887469 = r2887467 / r2887468;
        double r2887470 = r2887453 ? r2887466 : r2887469;
        return r2887470;
}

double f(double a, double b, double c) {
        double r2887471 = b;
        double r2887472 = -1.6509659704621613e+43;
        bool r2887473 = r2887471 <= r2887472;
        double r2887474 = 0.0;
        bool r2887475 = r2887471 >= r2887474;
        double r2887476 = a;
        double r2887477 = c;
        double r2887478 = r2887477 / r2887471;
        double r2887479 = r2887476 * r2887478;
        double r2887480 = r2887479 - r2887471;
        double r2887481 = 2.0;
        double r2887482 = r2887480 * r2887481;
        double r2887483 = r2887476 * r2887481;
        double r2887484 = r2887482 / r2887483;
        double r2887485 = r2887477 * r2887481;
        double r2887486 = r2887485 / r2887482;
        double r2887487 = r2887475 ? r2887484 : r2887486;
        double r2887488 = 7.356079352631206e+120;
        bool r2887489 = r2887471 <= r2887488;
        double r2887490 = -r2887471;
        double r2887491 = -4.0;
        double r2887492 = r2887491 * r2887476;
        double r2887493 = r2887471 * r2887471;
        double r2887494 = fma(r2887492, r2887477, r2887493);
        double r2887495 = sqrt(r2887494);
        double r2887496 = r2887490 - r2887495;
        double r2887497 = r2887496 / r2887483;
        double r2887498 = r2887495 - r2887471;
        double r2887499 = sqrt(r2887498);
        double r2887500 = r2887499 * r2887499;
        double r2887501 = r2887477 / r2887500;
        double r2887502 = r2887481 * r2887501;
        double r2887503 = r2887475 ? r2887497 : r2887502;
        double r2887504 = r2887489 ? r2887503 : r2887487;
        double r2887505 = r2887473 ? r2887487 : r2887504;
        return r2887505;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 2 regimes
  2. if b < -1.6509659704621613e+43 or 7.356079352631206e+120 < b

    1. Initial program 32.4

      \[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Taylor expanded around -inf 20.8

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\color{blue}{\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}}\\ \end{array}\]
    3. Simplified18.8

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\color{blue}{\frac{2 \cdot c}{\left(\frac{c}{b} \cdot a - b\right) \cdot 2}}\\ \end{array}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt18.8

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \color{blue}{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(\frac{c}{b} \cdot a - b\right) \cdot 2}\\ \end{array}\]
    6. Taylor expanded around inf 6.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\color{blue}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(\frac{c}{b} \cdot a - b\right) \cdot 2}\\ \end{array}\]
    7. Simplified3.8

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\color{blue}{\left(\frac{c}{b} \cdot a - b\right) \cdot 2}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(\frac{c}{b} \cdot a - b\right) \cdot 2}\\ \end{array}\]

    if -1.6509659704621613e+43 < b < 7.356079352631206e+120

    1. Initial program 8.5

      \[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Simplified8.5

      \[\leadsto \color{blue}{\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \frac{c}{\sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*} - b}\\ \end{array}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt8.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \color{blue}{\frac{c}{\sqrt{\sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*} - b}}}\\ \end{array}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification6.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.6509659704621613 \cdot 10^{+43}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\ \end{array}\\ \mathbf{elif}\;b \le 7.356079352631206 \cdot 10^{+120}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \frac{c}{\sqrt{\sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(\left(-4 \cdot a\right) \cdot c + \left(b \cdot b\right))_*} - b}}\\ \end{array}\\ \mathbf{elif}\;b \ge 0:\\ \;\;\;\;\frac{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (a b c)
  :name "jeff quadratic root 1"
  (if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))