Average Error: 34.0 → 9.6
Time: 4.9s
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.0366436397824178 \cdot 10^{68}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -8.21218726880377109 \cdot 10^{-92}:\\ \;\;\;\;\frac{\frac{\left({b_2}^{2} - {b_2}^{2}\right) + a \cdot c}{\mathsf{fma}\left(-1, b_2, \sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\\ \mathbf{elif}\;b_2 \le -4.05237835825691163 \cdot 10^{-102}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 5.34931179548294658 \cdot 10^{30}:\\ \;\;\;\;\frac{-1 \cdot b_2 + \left(-\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{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 -1.0366436397824178 \cdot 10^{68}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le -8.21218726880377109 \cdot 10^{-92}:\\
\;\;\;\;\frac{\frac{\left({b_2}^{2} - {b_2}^{2}\right) + a \cdot c}{\mathsf{fma}\left(-1, b_2, \sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\\

\mathbf{elif}\;b_2 \le -4.05237835825691163 \cdot 10^{-102}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

\mathbf{else}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\

\end{array}
double f(double a, double b_2, double c) {
        double r16570 = b_2;
        double r16571 = -r16570;
        double r16572 = r16570 * r16570;
        double r16573 = a;
        double r16574 = c;
        double r16575 = r16573 * r16574;
        double r16576 = r16572 - r16575;
        double r16577 = sqrt(r16576);
        double r16578 = r16571 - r16577;
        double r16579 = r16578 / r16573;
        return r16579;
}

double f(double a, double b_2, double c) {
        double r16580 = b_2;
        double r16581 = -1.0366436397824178e+68;
        bool r16582 = r16580 <= r16581;
        double r16583 = -0.5;
        double r16584 = c;
        double r16585 = r16584 / r16580;
        double r16586 = r16583 * r16585;
        double r16587 = -8.212187268803771e-92;
        bool r16588 = r16580 <= r16587;
        double r16589 = 2.0;
        double r16590 = pow(r16580, r16589);
        double r16591 = r16590 - r16590;
        double r16592 = a;
        double r16593 = r16592 * r16584;
        double r16594 = r16591 + r16593;
        double r16595 = -1.0;
        double r16596 = r16580 * r16580;
        double r16597 = r16596 - r16593;
        double r16598 = sqrt(r16597);
        double r16599 = fma(r16595, r16580, r16598);
        double r16600 = r16594 / r16599;
        double r16601 = r16600 / r16592;
        double r16602 = -4.052378358256912e-102;
        bool r16603 = r16580 <= r16602;
        double r16604 = 5.349311795482947e+30;
        bool r16605 = r16580 <= r16604;
        double r16606 = r16595 * r16580;
        double r16607 = -r16598;
        double r16608 = r16606 + r16607;
        double r16609 = r16608 / r16592;
        double r16610 = 0.5;
        double r16611 = r16610 * r16585;
        double r16612 = r16580 / r16592;
        double r16613 = r16589 * r16612;
        double r16614 = r16611 - r16613;
        double r16615 = r16605 ? r16609 : r16614;
        double r16616 = r16603 ? r16586 : r16615;
        double r16617 = r16588 ? r16601 : r16616;
        double r16618 = r16582 ? r16586 : r16617;
        return r16618;
}

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.0366436397824178e+68 or -8.212187268803771e-92 < b_2 < -4.052378358256912e-102

    1. Initial program 57.1

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

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

    if -1.0366436397824178e+68 < b_2 < -8.212187268803771e-92

    1. Initial program 42.4

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt44.7

      \[\leadsto \frac{\left(-\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}}\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied distribute-rgt-neg-in44.7

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \left(-\sqrt[3]{b_2}\right)} - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    5. Applied fma-neg45.3

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}, -\sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]
    6. Using strategy rm
    7. Applied fma-udef44.7

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \left(-\sqrt[3]{b_2}\right) + \left(-\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]
    8. Simplified42.4

      \[\leadsto \frac{\color{blue}{-1 \cdot b_2} + \left(-\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}{a}\]
    9. Using strategy rm
    10. Applied flip-+42.4

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

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

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

    if -4.052378358256912e-102 < b_2 < 5.349311795482947e+30

    1. Initial program 13.0

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

      \[\leadsto \frac{\left(-\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}}\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied distribute-rgt-neg-in13.1

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \left(-\sqrt[3]{b_2}\right)} - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    5. Applied fma-neg13.1

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}, -\sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]
    6. Using strategy rm
    7. Applied fma-udef13.1

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \left(-\sqrt[3]{b_2}\right) + \left(-\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]
    8. Simplified13.0

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

    if 5.349311795482947e+30 < b_2

    1. Initial program 35.5

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification9.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.0366436397824178 \cdot 10^{68}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -8.21218726880377109 \cdot 10^{-92}:\\ \;\;\;\;\frac{\frac{\left({b_2}^{2} - {b_2}^{2}\right) + a \cdot c}{\mathsf{fma}\left(-1, b_2, \sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\\ \mathbf{elif}\;b_2 \le -4.05237835825691163 \cdot 10^{-102}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 5.34931179548294658 \cdot 10^{30}:\\ \;\;\;\;\frac{-1 \cdot b_2 + \left(-\sqrt{b_2 \cdot b_2 - a \cdot c}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2020049 +o rules:numerics
(FPCore (a b_2 c)
  :name "quad2m (problem 3.2.1, negative)"
  :precision binary64
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))