Average Error: 33.7 → 9.1
Time: 24.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 -1.6806111715441095 \cdot 10^{-29}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.5349830112643849 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\sqrt{\mathsf{fma}\left(-c, a, b_2 \cdot b_2\right)} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 5.9911994584698608 \cdot 10^{103}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{{b_2}^{2} - c \cdot a}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, -2 \cdot \frac{b_2}{a}\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.6806111715441095 \cdot 10^{-29}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le -2.5349830112643849 \cdot 10^{-83}:\\
\;\;\;\;\frac{\frac{a \cdot c}{\sqrt{\mathsf{fma}\left(-c, a, b_2 \cdot b_2\right)} - b_2}}{a}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r28258 = b_2;
        double r28259 = -r28258;
        double r28260 = r28258 * r28258;
        double r28261 = a;
        double r28262 = c;
        double r28263 = r28261 * r28262;
        double r28264 = r28260 - r28263;
        double r28265 = sqrt(r28264);
        double r28266 = r28259 - r28265;
        double r28267 = r28266 / r28261;
        return r28267;
}

double f(double a, double b_2, double c) {
        double r28268 = b_2;
        double r28269 = -1.6806111715441095e-29;
        bool r28270 = r28268 <= r28269;
        double r28271 = -0.5;
        double r28272 = c;
        double r28273 = r28272 / r28268;
        double r28274 = r28271 * r28273;
        double r28275 = -2.534983011264385e-83;
        bool r28276 = r28268 <= r28275;
        double r28277 = a;
        double r28278 = r28277 * r28272;
        double r28279 = -r28272;
        double r28280 = r28268 * r28268;
        double r28281 = fma(r28279, r28277, r28280);
        double r28282 = sqrt(r28281);
        double r28283 = r28282 - r28268;
        double r28284 = r28278 / r28283;
        double r28285 = r28284 / r28277;
        double r28286 = 5.991199458469861e+103;
        bool r28287 = r28268 <= r28286;
        double r28288 = 1.0;
        double r28289 = -r28268;
        double r28290 = 2.0;
        double r28291 = pow(r28268, r28290);
        double r28292 = r28272 * r28277;
        double r28293 = r28291 - r28292;
        double r28294 = sqrt(r28293);
        double r28295 = r28289 - r28294;
        double r28296 = r28277 / r28295;
        double r28297 = r28288 / r28296;
        double r28298 = 0.5;
        double r28299 = -2.0;
        double r28300 = r28268 / r28277;
        double r28301 = r28299 * r28300;
        double r28302 = fma(r28298, r28273, r28301);
        double r28303 = r28287 ? r28297 : r28302;
        double r28304 = r28276 ? r28285 : r28303;
        double r28305 = r28270 ? r28274 : r28304;
        return r28305;
}

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 < -1.6806111715441095e-29

    1. Initial program 54.8

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

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

    if -1.6806111715441095e-29 < b_2 < -2.534983011264385e-83

    1. Initial program 32.9

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

      \[\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. Simplified16.9

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

      \[\leadsto \frac{\frac{0 + a \cdot c}{\color{blue}{\sqrt{\mathsf{fma}\left(-c, a, b_2 \cdot b_2\right)} - b_2}}}{a}\]

    if -2.534983011264385e-83 < b_2 < 5.991199458469861e+103

    1. Initial program 12.0

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

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

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

    if 5.991199458469861e+103 < b_2

    1. Initial program 48.7

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.6806111715441095 \cdot 10^{-29}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.5349830112643849 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\sqrt{\mathsf{fma}\left(-c, a, b_2 \cdot b_2\right)} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 5.9911994584698608 \cdot 10^{103}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{{b_2}^{2} - c \cdot a}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, -2 \cdot \frac{b_2}{a}\right)\\ \end{array}\]

Reproduce

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