Average Error: 34.0 → 10.5
Time: 21.2s
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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 3.038903409991338138548211857189252856935 \cdot 10^{107}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{b_2}{a} \cdot -2\\ \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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r951080 = b_2;
        double r951081 = -r951080;
        double r951082 = r951080 * r951080;
        double r951083 = a;
        double r951084 = c;
        double r951085 = r951083 * r951084;
        double r951086 = r951082 - r951085;
        double r951087 = sqrt(r951086);
        double r951088 = r951081 - r951087;
        double r951089 = r951088 / r951083;
        return r951089;
}

double f(double a, double b_2, double c) {
        double r951090 = b_2;
        double r951091 = -9.332433396832084e-58;
        bool r951092 = r951090 <= r951091;
        double r951093 = -0.5;
        double r951094 = c;
        double r951095 = r951094 / r951090;
        double r951096 = r951093 * r951095;
        double r951097 = 3.038903409991338e+107;
        bool r951098 = r951090 <= r951097;
        double r951099 = -r951090;
        double r951100 = r951090 * r951090;
        double r951101 = a;
        double r951102 = r951101 * r951094;
        double r951103 = r951100 - r951102;
        double r951104 = sqrt(r951103);
        double r951105 = r951099 - r951104;
        double r951106 = r951105 / r951101;
        double r951107 = r951090 / r951101;
        double r951108 = -2.0;
        double r951109 = r951107 * r951108;
        double r951110 = r951098 ? r951106 : r951109;
        double r951111 = r951092 ? r951096 : r951110;
        return r951111;
}

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 < -9.332433396832084e-58

    1. Initial program 53.5

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

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

    if -9.332433396832084e-58 < b_2 < 3.038903409991338e+107

    1. Initial program 14.0

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

    if 3.038903409991338e+107 < b_2

    1. Initial program 49.1

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

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

      \[\leadsto \frac{\frac{\color{blue}{0 + a \cdot c}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    5. Simplified62.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 3.038903409991338138548211857189252856935 \cdot 10^{107}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{b_2}{a} \cdot -2\\ \end{array}\]

Reproduce

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