Average Error: 33.3 → 6.0
Time: 1.1m
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 -6.909589459766455 \cdot 10^{+149}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.1973583843642258 \cdot 10^{-287}:\\ \;\;\;\;\frac{c}{\sqrt{(b_2 \cdot b_2 + \left(-c \cdot a\right))_*} + \left(-b_2\right)}\\ \mathbf{elif}\;b_2 \le 1.0185417924042504 \cdot 10^{+119}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{(b_2 \cdot b_2 + \left(-c \cdot a\right))_*}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{(\frac{1}{2} \cdot \left(\frac{a}{\frac{b_2}{c}}\right) + \left(b_2 \cdot -2\right))_*}{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 -6.909589459766455 \cdot 10^{+149}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le -1.1973583843642258 \cdot 10^{-287}:\\
\;\;\;\;\frac{c}{\sqrt{(b_2 \cdot b_2 + \left(-c \cdot a\right))_*} + \left(-b_2\right)}\\

\mathbf{elif}\;b_2 \le 1.0185417924042504 \cdot 10^{+119}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{(b_2 \cdot b_2 + \left(-c \cdot a\right))_*}}{a}\\

\mathbf{else}:\\
\;\;\;\;\frac{(\frac{1}{2} \cdot \left(\frac{a}{\frac{b_2}{c}}\right) + \left(b_2 \cdot -2\right))_*}{a}\\

\end{array}
double f(double a, double b_2, double c) {
        double r1917084 = b_2;
        double r1917085 = -r1917084;
        double r1917086 = r1917084 * r1917084;
        double r1917087 = a;
        double r1917088 = c;
        double r1917089 = r1917087 * r1917088;
        double r1917090 = r1917086 - r1917089;
        double r1917091 = sqrt(r1917090);
        double r1917092 = r1917085 - r1917091;
        double r1917093 = r1917092 / r1917087;
        return r1917093;
}

double f(double a, double b_2, double c) {
        double r1917094 = b_2;
        double r1917095 = -6.909589459766455e+149;
        bool r1917096 = r1917094 <= r1917095;
        double r1917097 = -0.5;
        double r1917098 = c;
        double r1917099 = r1917098 / r1917094;
        double r1917100 = r1917097 * r1917099;
        double r1917101 = -1.1973583843642258e-287;
        bool r1917102 = r1917094 <= r1917101;
        double r1917103 = a;
        double r1917104 = r1917098 * r1917103;
        double r1917105 = -r1917104;
        double r1917106 = fma(r1917094, r1917094, r1917105);
        double r1917107 = sqrt(r1917106);
        double r1917108 = -r1917094;
        double r1917109 = r1917107 + r1917108;
        double r1917110 = r1917098 / r1917109;
        double r1917111 = 1.0185417924042504e+119;
        bool r1917112 = r1917094 <= r1917111;
        double r1917113 = r1917108 - r1917107;
        double r1917114 = r1917113 / r1917103;
        double r1917115 = 0.5;
        double r1917116 = r1917094 / r1917098;
        double r1917117 = r1917103 / r1917116;
        double r1917118 = -2.0;
        double r1917119 = r1917094 * r1917118;
        double r1917120 = fma(r1917115, r1917117, r1917119);
        double r1917121 = r1917120 / r1917103;
        double r1917122 = r1917112 ? r1917114 : r1917121;
        double r1917123 = r1917102 ? r1917110 : r1917122;
        double r1917124 = r1917096 ? r1917100 : r1917123;
        return r1917124;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 4 regimes
  2. if b_2 < -6.909589459766455e+149

    1. Initial program 62.5

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

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

    if -6.909589459766455e+149 < b_2 < -1.1973583843642258e-287

    1. Initial program 34.4

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

      \[\leadsto \frac{\left(-b_2\right) - \sqrt{\color{blue}{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*}}}{a}\]
    4. Using strategy rm
    5. Applied div-inv34.4

      \[\leadsto \color{blue}{\left(\left(-b_2\right) - \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*}\right) \cdot \frac{1}{a}}\]
    6. Using strategy rm
    7. Applied flip--34.5

      \[\leadsto \color{blue}{\frac{\left(-b_2\right) \cdot \left(-b_2\right) - \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*} \cdot \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*}}{\left(-b_2\right) + \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*}}} \cdot \frac{1}{a}\]
    8. Applied associate-*l/34.5

      \[\leadsto \color{blue}{\frac{\left(\left(-b_2\right) \cdot \left(-b_2\right) - \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*} \cdot \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*}\right) \cdot \frac{1}{a}}{\left(-b_2\right) + \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*}}}\]
    9. Simplified13.8

      \[\leadsto \frac{\color{blue}{\frac{a \cdot c}{a}}}{\left(-b_2\right) + \sqrt{(b_2 \cdot b_2 + \left(-a \cdot c\right))_*}}\]
    10. Taylor expanded around -inf 6.9

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

    if -1.1973583843642258e-287 < b_2 < 1.0185417924042504e+119

    1. Initial program 8.4

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

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

    if 1.0185417924042504e+119 < b_2

    1. Initial program 50.9

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

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

      \[\leadsto \frac{\color{blue}{(\frac{1}{2} \cdot \left(\frac{a}{\frac{b_2}{c}}\right) + \left(-2 \cdot b_2\right))_*}}{a}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification6.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -6.909589459766455 \cdot 10^{+149}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.1973583843642258 \cdot 10^{-287}:\\ \;\;\;\;\frac{c}{\sqrt{(b_2 \cdot b_2 + \left(-c \cdot a\right))_*} + \left(-b_2\right)}\\ \mathbf{elif}\;b_2 \le 1.0185417924042504 \cdot 10^{+119}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{(b_2 \cdot b_2 + \left(-c \cdot a\right))_*}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{(\frac{1}{2} \cdot \left(\frac{a}{\frac{b_2}{c}}\right) + \left(b_2 \cdot -2\right))_*}{a}\\ \end{array}\]

Reproduce

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