Average Error: 34.3 → 12.2
Time: 6.0s
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 -1.3596472614638946 \cdot 10^{154}:\\ \;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\ \mathbf{elif}\;b \le -4.9276367402926466 \cdot 10^{-151}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(\left(4 \cdot a\right) \cdot \left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right)\right) \cdot \sqrt[3]{c}}}{2 \cdot a}\\ \mathbf{elif}\;b \le 1.3192555879554789 \cdot 10^{90}:\\ \;\;\;\;\frac{\frac{1}{-1} \cdot \frac{4 \cdot a}{\frac{b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{c}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{a \cdot c}{b}}{2 \cdot a}\\ \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 -1.3596472614638946 \cdot 10^{154}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\

\mathbf{elif}\;b \le -4.9276367402926466 \cdot 10^{-151}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(\left(4 \cdot a\right) \cdot \left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right)\right) \cdot \sqrt[3]{c}}}{2 \cdot a}\\

\mathbf{elif}\;b \le 1.3192555879554789 \cdot 10^{90}:\\
\;\;\;\;\frac{\frac{1}{-1} \cdot \frac{4 \cdot a}{\frac{b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{c}}}{2 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{a \cdot c}{b}}{2 \cdot a}\\

\end{array}
double f(double a, double b, double c) {
        double r55829 = b;
        double r55830 = -r55829;
        double r55831 = r55829 * r55829;
        double r55832 = 4.0;
        double r55833 = a;
        double r55834 = r55832 * r55833;
        double r55835 = c;
        double r55836 = r55834 * r55835;
        double r55837 = r55831 - r55836;
        double r55838 = sqrt(r55837);
        double r55839 = r55830 + r55838;
        double r55840 = 2.0;
        double r55841 = r55840 * r55833;
        double r55842 = r55839 / r55841;
        return r55842;
}

double f(double a, double b, double c) {
        double r55843 = b;
        double r55844 = -1.3596472614638946e+154;
        bool r55845 = r55843 <= r55844;
        double r55846 = 2.0;
        double r55847 = a;
        double r55848 = c;
        double r55849 = r55847 * r55848;
        double r55850 = r55849 / r55843;
        double r55851 = r55846 * r55850;
        double r55852 = 2.0;
        double r55853 = r55852 * r55843;
        double r55854 = r55851 - r55853;
        double r55855 = r55846 * r55847;
        double r55856 = r55854 / r55855;
        double r55857 = -4.9276367402926466e-151;
        bool r55858 = r55843 <= r55857;
        double r55859 = -r55843;
        double r55860 = r55843 * r55843;
        double r55861 = 4.0;
        double r55862 = r55861 * r55847;
        double r55863 = cbrt(r55848);
        double r55864 = r55863 * r55863;
        double r55865 = r55862 * r55864;
        double r55866 = r55865 * r55863;
        double r55867 = r55860 - r55866;
        double r55868 = sqrt(r55867);
        double r55869 = r55859 + r55868;
        double r55870 = r55869 / r55855;
        double r55871 = 1.319255587955479e+90;
        bool r55872 = r55843 <= r55871;
        double r55873 = 1.0;
        double r55874 = -r55873;
        double r55875 = r55873 / r55874;
        double r55876 = r55862 * r55848;
        double r55877 = r55860 - r55876;
        double r55878 = sqrt(r55877);
        double r55879 = r55843 + r55878;
        double r55880 = r55879 / r55848;
        double r55881 = r55862 / r55880;
        double r55882 = r55875 * r55881;
        double r55883 = r55882 / r55855;
        double r55884 = -2.0;
        double r55885 = r55884 * r55850;
        double r55886 = r55885 / r55855;
        double r55887 = r55872 ? r55883 : r55886;
        double r55888 = r55858 ? r55870 : r55887;
        double r55889 = r55845 ? r55856 : r55888;
        return r55889;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 4 regimes
  2. if b < -1.3596472614638946e+154

    1. Initial program 64.0

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Taylor expanded around -inf 10.9

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

    if -1.3596472614638946e+154 < b < -4.9276367402926466e-151

    1. Initial program 6.3

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

      \[\leadsto \frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot \color{blue}{\left(\left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right) \cdot \sqrt[3]{c}\right)}}}{2 \cdot a}\]
    4. Applied associate-*r*6.4

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

    if -4.9276367402926466e-151 < b < 1.319255587955479e+90

    1. Initial program 27.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt27.7

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

      \[\leadsto \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}\]
    5. Using strategy rm
    6. Applied flip-+29.0

      \[\leadsto \frac{\color{blue}{\frac{\left(-b\right) \cdot \left(-b\right) - \left(\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}}\right) \cdot \left(\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}}\right)}{\left(-b\right) - \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}\]
    7. Simplified16.4

      \[\leadsto \frac{\frac{\color{blue}{0 + \left(4 \cdot a\right) \cdot c}}{\left(-b\right) - \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}\]
    8. Simplified16.3

      \[\leadsto \frac{\frac{0 + \left(4 \cdot a\right) \cdot c}{\color{blue}{-\left(b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}}{2 \cdot a}\]
    9. Using strategy rm
    10. Applied *-un-lft-identity16.3

      \[\leadsto \frac{\frac{0 + \left(4 \cdot a\right) \cdot c}{-\color{blue}{1 \cdot \left(b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}}{2 \cdot a}\]
    11. Applied distribute-lft-neg-in16.3

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

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

      \[\leadsto \frac{\color{blue}{\frac{1}{-1} \cdot \frac{0 + \left(4 \cdot a\right) \cdot c}{b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}{2 \cdot a}\]
    14. Simplified14.5

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

    if 1.319255587955479e+90 < b

    1. Initial program 59.1

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Taylor expanded around inf 14.9

      \[\leadsto \frac{\color{blue}{-2 \cdot \frac{a \cdot c}{b}}}{2 \cdot a}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification12.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.3596472614638946 \cdot 10^{154}:\\ \;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\ \mathbf{elif}\;b \le -4.9276367402926466 \cdot 10^{-151}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(\left(4 \cdot a\right) \cdot \left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right)\right) \cdot \sqrt[3]{c}}}{2 \cdot a}\\ \mathbf{elif}\;b \le 1.3192555879554789 \cdot 10^{90}:\\ \;\;\;\;\frac{\frac{1}{-1} \cdot \frac{4 \cdot a}{\frac{b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{c}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{a \cdot c}{b}}{2 \cdot a}\\ \end{array}\]

Reproduce

herbie shell --seed 2020021 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, full range"
  :precision binary64
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))