Average Error: 34.6 → 16.2
Time: 31.6s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le 2.49445624012960862396084940365110205816 \cdot 10^{-289}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 3.224491050532555179035846228386712352959 \cdot 10^{112}:\\ \;\;\;\;\frac{\frac{\frac{-1}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}}}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}} \cdot \left(\frac{a}{a} \cdot \frac{4 \cdot c}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(a \cdot \left(-c\right), 4, 0\right)}{2 \cdot b}}{a}}{2}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le 2.49445624012960862396084940365110205816 \cdot 10^{-289}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} - b}{a}}{2}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r50682 = b;
        double r50683 = -r50682;
        double r50684 = r50682 * r50682;
        double r50685 = 4.0;
        double r50686 = a;
        double r50687 = r50685 * r50686;
        double r50688 = c;
        double r50689 = r50687 * r50688;
        double r50690 = r50684 - r50689;
        double r50691 = sqrt(r50690);
        double r50692 = r50683 + r50691;
        double r50693 = 2.0;
        double r50694 = r50693 * r50686;
        double r50695 = r50692 / r50694;
        return r50695;
}

double f(double a, double b, double c) {
        double r50696 = b;
        double r50697 = 2.4944562401296086e-289;
        bool r50698 = r50696 <= r50697;
        double r50699 = a;
        double r50700 = -r50699;
        double r50701 = 4.0;
        double r50702 = r50700 * r50701;
        double r50703 = c;
        double r50704 = r50696 * r50696;
        double r50705 = fma(r50702, r50703, r50704);
        double r50706 = sqrt(r50705);
        double r50707 = r50706 - r50696;
        double r50708 = r50707 / r50699;
        double r50709 = 2.0;
        double r50710 = r50708 / r50709;
        double r50711 = 3.224491050532555e+112;
        bool r50712 = r50696 <= r50711;
        double r50713 = -1.0;
        double r50714 = -r50703;
        double r50715 = r50699 * r50714;
        double r50716 = fma(r50701, r50715, r50704);
        double r50717 = sqrt(r50716);
        double r50718 = r50717 + r50696;
        double r50719 = cbrt(r50718);
        double r50720 = r50713 / r50719;
        double r50721 = r50720 / r50719;
        double r50722 = r50699 / r50699;
        double r50723 = r50701 * r50703;
        double r50724 = r50723 / r50719;
        double r50725 = r50722 * r50724;
        double r50726 = r50721 * r50725;
        double r50727 = r50726 / r50709;
        double r50728 = 0.0;
        double r50729 = fma(r50715, r50701, r50728);
        double r50730 = 2.0;
        double r50731 = r50730 * r50696;
        double r50732 = r50729 / r50731;
        double r50733 = r50732 / r50699;
        double r50734 = r50733 / r50709;
        double r50735 = r50712 ? r50727 : r50734;
        double r50736 = r50698 ? r50710 : r50735;
        return r50736;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 3 regimes
  2. if b < 2.4944562401296086e-289

    1. Initial program 22.5

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{\mathsf{fma}\left(-a, 4 \cdot c, b \cdot b\right)} - b}{a}}{2}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity22.5

      \[\leadsto \frac{\frac{\sqrt{\mathsf{fma}\left(-a, 4 \cdot c, b \cdot b\right)} - b}{\color{blue}{1 \cdot a}}}{2}\]
    5. Applied *-un-lft-identity22.5

      \[\leadsto \frac{\frac{\color{blue}{1 \cdot \left(\sqrt{\mathsf{fma}\left(-a, 4 \cdot c, b \cdot b\right)} - b\right)}}{1 \cdot a}}{2}\]
    6. Applied times-frac22.5

      \[\leadsto \frac{\color{blue}{\frac{1}{1} \cdot \frac{\sqrt{\mathsf{fma}\left(-a, 4 \cdot c, b \cdot b\right)} - b}{a}}}{2}\]
    7. Simplified22.5

      \[\leadsto \frac{\color{blue}{1} \cdot \frac{\sqrt{\mathsf{fma}\left(-a, 4 \cdot c, b \cdot b\right)} - b}{a}}{2}\]
    8. Simplified22.5

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

    if 2.4944562401296086e-289 < b < 3.224491050532555e+112

    1. Initial program 33.8

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

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

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

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

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, 0\right)}{\color{blue}{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}}}{a}}{2}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity15.8

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, 0\right)}{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}}{\color{blue}{1 \cdot a}}}{2}\]
    9. Applied add-cube-cbrt16.5

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, 0\right)}{\color{blue}{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}\right) \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}}}}{1 \cdot a}}{2}\]
    10. Applied *-un-lft-identity16.5

      \[\leadsto \frac{\frac{\frac{\color{blue}{1 \cdot \mathsf{fma}\left(\left(-a\right) \cdot c, 4, 0\right)}}{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}\right) \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}}}{1 \cdot a}}{2}\]
    11. Applied times-frac16.5

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{\sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}} \cdot \frac{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, 0\right)}{\sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} + b}}}}{1 \cdot a}}{2}\]
    12. Applied times-frac15.8

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

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

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

    if 3.224491050532555e+112 < b

    1. Initial program 60.8

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 2.49445624012960862396084940365110205816 \cdot 10^{-289}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 3.224491050532555179035846228386712352959 \cdot 10^{112}:\\ \;\;\;\;\frac{\frac{\frac{-1}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}}}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}} \cdot \left(\frac{a}{a} \cdot \frac{4 \cdot c}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(a \cdot \left(-c\right), 4, 0\right)}{2 \cdot b}}{a}}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, full range"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))