Average Error: 33.2 → 9.9
Time: 21.4s
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 -1.8774910265390396 \cdot 10^{-73}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.5703497435733685 \cdot 10^{+102}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\ \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 -1.8774910265390396 \cdot 10^{-73}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\

\end{array}
double f(double a, double b_2, double c) {
        double r330744 = b_2;
        double r330745 = -r330744;
        double r330746 = r330744 * r330744;
        double r330747 = a;
        double r330748 = c;
        double r330749 = r330747 * r330748;
        double r330750 = r330746 - r330749;
        double r330751 = sqrt(r330750);
        double r330752 = r330745 - r330751;
        double r330753 = r330752 / r330747;
        return r330753;
}

double f(double a, double b_2, double c) {
        double r330754 = b_2;
        double r330755 = -1.8774910265390396e-73;
        bool r330756 = r330754 <= r330755;
        double r330757 = -0.5;
        double r330758 = c;
        double r330759 = r330758 / r330754;
        double r330760 = r330757 * r330759;
        double r330761 = 2.5703497435733685e+102;
        bool r330762 = r330754 <= r330761;
        double r330763 = -r330754;
        double r330764 = r330754 * r330754;
        double r330765 = a;
        double r330766 = r330765 * r330758;
        double r330767 = r330764 - r330766;
        double r330768 = sqrt(r330767);
        double r330769 = r330763 - r330768;
        double r330770 = 1.0;
        double r330771 = r330770 / r330765;
        double r330772 = r330769 * r330771;
        double r330773 = r330754 / r330765;
        double r330774 = -2.0;
        double r330775 = 0.5;
        double r330776 = r330754 / r330758;
        double r330777 = r330775 / r330776;
        double r330778 = fma(r330773, r330774, r330777);
        double r330779 = r330762 ? r330772 : r330778;
        double r330780 = r330756 ? r330760 : r330779;
        return r330780;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 3 regimes
  2. if b_2 < -1.8774910265390396e-73

    1. Initial program 52.5

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

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

    if -1.8774910265390396e-73 < b_2 < 2.5703497435733685e+102

    1. Initial program 13.1

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

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

    if 2.5703497435733685e+102 < b_2

    1. Initial program 43.9

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}}\]
    3. Simplified2.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification9.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.8774910265390396 \cdot 10^{-73}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.5703497435733685 \cdot 10^{+102}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\ \end{array}\]

Reproduce

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