Average Error: 33.6 → 9.8
Time: 19.0s
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 -8.1855168042470635 \cdot 10^{-53}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 3.634898599408338 \cdot 10^{+146}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, \frac{b_2}{a} \cdot -2\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 -8.1855168042470635 \cdot 10^{-53}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r422669 = b_2;
        double r422670 = -r422669;
        double r422671 = r422669 * r422669;
        double r422672 = a;
        double r422673 = c;
        double r422674 = r422672 * r422673;
        double r422675 = r422671 - r422674;
        double r422676 = sqrt(r422675);
        double r422677 = r422670 - r422676;
        double r422678 = r422677 / r422672;
        return r422678;
}

double f(double a, double b_2, double c) {
        double r422679 = b_2;
        double r422680 = -8.1855168042470635e-53;
        bool r422681 = r422679 <= r422680;
        double r422682 = -0.5;
        double r422683 = c;
        double r422684 = r422683 / r422679;
        double r422685 = r422682 * r422684;
        double r422686 = 3.634898599408338e+146;
        bool r422687 = r422679 <= r422686;
        double r422688 = -r422679;
        double r422689 = r422679 * r422679;
        double r422690 = a;
        double r422691 = r422690 * r422683;
        double r422692 = r422689 - r422691;
        double r422693 = sqrt(r422692);
        double r422694 = r422688 - r422693;
        double r422695 = r422694 / r422690;
        double r422696 = 0.5;
        double r422697 = r422679 / r422690;
        double r422698 = -2.0;
        double r422699 = r422697 * r422698;
        double r422700 = fma(r422684, r422696, r422699);
        double r422701 = r422687 ? r422695 : r422700;
        double r422702 = r422681 ? r422685 : r422701;
        return r422702;
}

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 < -8.1855168042470635e-53

    1. Initial program 54.2

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

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

    if -8.1855168042470635e-53 < b_2 < 3.634898599408338e+146

    1. Initial program 13.2

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

      \[\leadsto \color{blue}{\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}}\]
    4. Using strategy rm
    5. Applied un-div-inv13.2

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

    if 3.634898599408338e+146 < b_2

    1. Initial program 58.5

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

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

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

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

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

Reproduce

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