Average Error: 34.0 → 11.7
Time: 4.9s
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 -5.92145859080318459 \cdot 10^{30}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.35303540148363475 \cdot 10^{-114}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{elif}\;b_2 \le -3.70403707285546 \cdot 10^{-127}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.3866645776898725 \cdot 10^{85}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;-2 \cdot \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 -5.92145859080318459 \cdot 10^{30}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le -1.35303540148363475 \cdot 10^{-114}:\\
\;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\

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

\mathbf{elif}\;b_2 \le 2.3866645776898725 \cdot 10^{85}:\\
\;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r14910 = b_2;
        double r14911 = -r14910;
        double r14912 = r14910 * r14910;
        double r14913 = a;
        double r14914 = c;
        double r14915 = r14913 * r14914;
        double r14916 = r14912 - r14915;
        double r14917 = sqrt(r14916);
        double r14918 = r14911 - r14917;
        double r14919 = r14918 / r14913;
        return r14919;
}

double f(double a, double b_2, double c) {
        double r14920 = b_2;
        double r14921 = -5.921458590803185e+30;
        bool r14922 = r14920 <= r14921;
        double r14923 = -0.5;
        double r14924 = c;
        double r14925 = r14924 / r14920;
        double r14926 = r14923 * r14925;
        double r14927 = -1.3530354014836348e-114;
        bool r14928 = r14920 <= r14927;
        double r14929 = -r14920;
        double r14930 = r14920 * r14920;
        double r14931 = a;
        double r14932 = r14931 * r14924;
        double r14933 = r14930 - r14932;
        double r14934 = sqrt(r14933);
        double r14935 = r14929 - r14934;
        double r14936 = 1.0;
        double r14937 = r14936 / r14931;
        double r14938 = r14935 * r14937;
        double r14939 = -3.704037072855455e-127;
        bool r14940 = r14920 <= r14939;
        double r14941 = 2.3866645776898725e+85;
        bool r14942 = r14920 <= r14941;
        double r14943 = -2.0;
        double r14944 = r14920 / r14931;
        double r14945 = r14943 * r14944;
        double r14946 = r14942 ? r14938 : r14945;
        double r14947 = r14940 ? r14926 : r14946;
        double r14948 = r14928 ? r14938 : r14947;
        double r14949 = r14922 ? r14926 : r14948;
        return r14949;
}

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 3 regimes
  2. if b_2 < -5.921458590803185e+30 or -1.3530354014836348e-114 < b_2 < -3.704037072855455e-127

    1. Initial program 56.0

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

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

    if -5.921458590803185e+30 < b_2 < -1.3530354014836348e-114 or -3.704037072855455e-127 < b_2 < 2.3866645776898725e+85

    1. Initial program 17.6

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

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

    if 2.3866645776898725e+85 < b_2

    1. Initial program 43.7

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied clear-num43.8

      \[\leadsto \color{blue}{\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}}\]
    4. Taylor expanded around 0 3.8

      \[\leadsto \color{blue}{-2 \cdot \frac{b_2}{a}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification11.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -5.92145859080318459 \cdot 10^{30}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.35303540148363475 \cdot 10^{-114}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{elif}\;b_2 \le -3.70403707285546 \cdot 10^{-127}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.3866645776898725 \cdot 10^{85}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;-2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2020039 +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))