Average Error: 33.3 → 10.1
Time: 17.4s
Precision: 64
\[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -5.7874989996849275 \cdot 10^{-40}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \mathbf{elif}\;b \le 1.7665622931893247 \cdot 10^{+83}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{\mathsf{fma}\left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right) + \mathsf{fma}\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}, \sqrt[3]{-b}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right)\right)}{a}} \cdot \left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \end{array}\]
\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -5.7874989996849275 \cdot 10^{-40}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\

\mathbf{elif}\;b \le 1.7665622931893247 \cdot 10^{+83}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{\mathsf{fma}\left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right) + \mathsf{fma}\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}, \sqrt[3]{-b}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right)\right)}{a}} \cdot \left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}}\right)}{2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r996392 = b;
        double r996393 = -r996392;
        double r996394 = r996392 * r996392;
        double r996395 = 4.0;
        double r996396 = a;
        double r996397 = c;
        double r996398 = r996396 * r996397;
        double r996399 = r996395 * r996398;
        double r996400 = r996394 - r996399;
        double r996401 = sqrt(r996400);
        double r996402 = r996393 - r996401;
        double r996403 = 2.0;
        double r996404 = r996403 * r996396;
        double r996405 = r996402 / r996404;
        return r996405;
}

double f(double a, double b, double c) {
        double r996406 = b;
        double r996407 = -5.7874989996849275e-40;
        bool r996408 = r996406 <= r996407;
        double r996409 = -2.0;
        double r996410 = c;
        double r996411 = r996410 / r996406;
        double r996412 = r996409 * r996411;
        double r996413 = 2.0;
        double r996414 = r996412 / r996413;
        double r996415 = 1.7665622931893247e+83;
        bool r996416 = r996406 <= r996415;
        double r996417 = a;
        double r996418 = -4.0;
        double r996419 = r996417 * r996418;
        double r996420 = r996406 * r996406;
        double r996421 = fma(r996419, r996410, r996420);
        double r996422 = cbrt(r996421);
        double r996423 = sqrt(r996422);
        double r996424 = -r996423;
        double r996425 = r996422 * r996422;
        double r996426 = sqrt(r996425);
        double r996427 = r996426 * r996423;
        double r996428 = fma(r996424, r996426, r996427);
        double r996429 = -r996406;
        double r996430 = cbrt(r996429);
        double r996431 = r996430 * r996430;
        double r996432 = -r996426;
        double r996433 = r996423 * r996432;
        double r996434 = fma(r996431, r996430, r996433);
        double r996435 = r996428 + r996434;
        double r996436 = r996435 / r996417;
        double r996437 = cbrt(r996436);
        double r996438 = sqrt(r996421);
        double r996439 = r996429 - r996438;
        double r996440 = r996439 / r996417;
        double r996441 = cbrt(r996440);
        double r996442 = r996441 * r996441;
        double r996443 = r996437 * r996442;
        double r996444 = r996443 / r996413;
        double r996445 = r996406 / r996417;
        double r996446 = r996411 - r996445;
        double r996447 = r996446 * r996413;
        double r996448 = r996447 / r996413;
        double r996449 = r996416 ? r996444 : r996448;
        double r996450 = r996408 ? r996414 : r996449;
        return r996450;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.3
Target20.4
Herbie10.1
\[\begin{array}{l} \mathbf{if}\;b \lt 0:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if b < -5.7874989996849275e-40

    1. Initial program 53.7

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified53.7

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}{2}}\]
    3. Taylor expanded around -inf 7.3

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

    if -5.7874989996849275e-40 < b < 1.7665622931893247e+83

    1. Initial program 13.8

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified13.8

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}{2}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt14.7

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}}}{2}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt14.6

      \[\leadsto \frac{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\color{blue}{\left(\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}}}{a}}}{2}\]
    7. Applied sqrt-prod14.6

      \[\leadsto \frac{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\left(-b\right) - \color{blue}{\sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}}}{a}}}{2}\]
    8. Applied add-cube-cbrt14.6

      \[\leadsto \frac{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\color{blue}{\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}\right) \cdot \sqrt[3]{-b}} - \sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}}{a}}}{2}\]
    9. Applied prod-diff14.7

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

    if 1.7665622931893247e+83 < b

    1. Initial program 42.5

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified42.5

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}{2}}\]
    3. Taylor expanded around inf 3.9

      \[\leadsto \frac{\color{blue}{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}}{2}\]
    4. Simplified3.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -5.7874989996849275 \cdot 10^{-40}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \mathbf{elif}\;b \le 1.7665622931893247 \cdot 10^{+83}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{\mathsf{fma}\left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right) + \mathsf{fma}\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}, \sqrt[3]{-b}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right)\right)}{a}} \cdot \left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019156 +o rules:numerics
(FPCore (a b c)
  :name "The quadratic formula (r2)"

  :herbie-target
  (if (< b 0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))

  (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))