Average Error: 33.5 → 10.4
Time: 1.6m
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.691277786452672 \cdot 10^{-38}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 1.502350718288979 \cdot 10^{+75}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{2}, \left(\frac{a}{\frac{b_2}{c}}\right), \left(b_2 \cdot -2\right)\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 -5.691277786452672 \cdot 10^{-38}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r3724576 = b_2;
        double r3724577 = -r3724576;
        double r3724578 = r3724576 * r3724576;
        double r3724579 = a;
        double r3724580 = c;
        double r3724581 = r3724579 * r3724580;
        double r3724582 = r3724578 - r3724581;
        double r3724583 = sqrt(r3724582);
        double r3724584 = r3724577 - r3724583;
        double r3724585 = r3724584 / r3724579;
        return r3724585;
}

double f(double a, double b_2, double c) {
        double r3724586 = b_2;
        double r3724587 = -5.691277786452672e-38;
        bool r3724588 = r3724586 <= r3724587;
        double r3724589 = -0.5;
        double r3724590 = c;
        double r3724591 = r3724590 / r3724586;
        double r3724592 = r3724589 * r3724591;
        double r3724593 = 1.502350718288979e+75;
        bool r3724594 = r3724586 <= r3724593;
        double r3724595 = -r3724586;
        double r3724596 = r3724586 * r3724586;
        double r3724597 = a;
        double r3724598 = r3724597 * r3724590;
        double r3724599 = r3724596 - r3724598;
        double r3724600 = sqrt(r3724599);
        double r3724601 = r3724595 - r3724600;
        double r3724602 = r3724601 / r3724597;
        double r3724603 = 0.5;
        double r3724604 = r3724586 / r3724590;
        double r3724605 = r3724597 / r3724604;
        double r3724606 = -2.0;
        double r3724607 = r3724586 * r3724606;
        double r3724608 = fma(r3724603, r3724605, r3724607);
        double r3724609 = r3724608 / r3724597;
        double r3724610 = r3724594 ? r3724602 : r3724609;
        double r3724611 = r3724588 ? r3724592 : r3724610;
        return r3724611;
}

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 < -5.691277786452672e-38

    1. Initial program 54.0

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

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

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

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

    if -5.691277786452672e-38 < b_2 < 1.502350718288979e+75

    1. Initial program 14.7

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

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

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

    if 1.502350718288979e+75 < b_2

    1. Initial program 40.8

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

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

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

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

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

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

Reproduce

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