Average Error: 34.6 → 10.5
Time: 19.1s
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 -3.4003426496549383 \cdot 10^{-77}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.466065355378786 \cdot 10^{-87}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{elif}\;b_2 \le -6.27327853977469935 \cdot 10^{-139}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 1.57632464397167146 \cdot 10^{69}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{b_2}{a}\\ \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 -3.4003426496549383 \cdot 10^{-77}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le -1.466065355378786 \cdot 10^{-87}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}\\

\mathbf{elif}\;b_2 \le -6.27327853977469935 \cdot 10^{-139}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le 1.57632464397167146 \cdot 10^{69}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\

\mathbf{else}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{b_2}{a}\\

\end{array}
double f(double a, double b_2, double c) {
        double r71924 = b_2;
        double r71925 = -r71924;
        double r71926 = r71924 * r71924;
        double r71927 = a;
        double r71928 = c;
        double r71929 = r71927 * r71928;
        double r71930 = r71926 - r71929;
        double r71931 = sqrt(r71930);
        double r71932 = r71925 - r71931;
        double r71933 = r71932 / r71927;
        return r71933;
}

double f(double a, double b_2, double c) {
        double r71934 = b_2;
        double r71935 = -3.4003426496549383e-77;
        bool r71936 = r71934 <= r71935;
        double r71937 = -0.5;
        double r71938 = c;
        double r71939 = r71938 / r71934;
        double r71940 = r71937 * r71939;
        double r71941 = -1.466065355378786e-87;
        bool r71942 = r71934 <= r71941;
        double r71943 = -r71934;
        double r71944 = a;
        double r71945 = r71943 / r71944;
        double r71946 = 1.0;
        double r71947 = r71934 * r71934;
        double r71948 = r71944 * r71938;
        double r71949 = r71947 - r71948;
        double r71950 = sqrt(r71949);
        double r71951 = r71944 / r71950;
        double r71952 = r71946 / r71951;
        double r71953 = r71945 - r71952;
        double r71954 = -6.273278539774699e-139;
        bool r71955 = r71934 <= r71954;
        double r71956 = 1.5763246439716715e+69;
        bool r71957 = r71934 <= r71956;
        double r71958 = r71950 / r71944;
        double r71959 = r71945 - r71958;
        double r71960 = r71934 / r71944;
        double r71961 = r71945 - r71960;
        double r71962 = r71957 ? r71959 : r71961;
        double r71963 = r71955 ? r71940 : r71962;
        double r71964 = r71942 ? r71953 : r71963;
        double r71965 = r71936 ? r71940 : r71964;
        return r71965;
}

Error

Bits error versus a

Bits error versus b_2

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_2 < -3.4003426496549383e-77 or -1.466065355378786e-87 < b_2 < -6.273278539774699e-139

    1. Initial program 51.1

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

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

    if -3.4003426496549383e-77 < b_2 < -1.466065355378786e-87

    1. Initial program 28.6

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied div-sub28.6

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    4. Using strategy rm
    5. Applied clear-num28.8

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

    if -6.273278539774699e-139 < b_2 < 1.5763246439716715e+69

    1. Initial program 11.5

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied div-sub11.5

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]

    if 1.5763246439716715e+69 < b_2

    1. Initial program 42.5

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied div-sub42.5

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    4. Using strategy rm
    5. Applied clear-num42.6

      \[\leadsto \frac{-b_2}{a} - \color{blue}{\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}}\]
    6. Taylor expanded around 0 5.0

      \[\leadsto \frac{-b_2}{a} - \color{blue}{\frac{b_2}{a}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification10.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.4003426496549383 \cdot 10^{-77}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.466065355378786 \cdot 10^{-87}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{elif}\;b_2 \le -6.27327853977469935 \cdot 10^{-139}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 1.57632464397167146 \cdot 10^{69}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{b_2}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2020020 +o rules:numerics
(FPCore (a b_2 c)
  :name "quad2m (problem 3.2.1, negative)"
  :precision binary64
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))