Average Error: 34.1 → 9.9
Time: 23.7s
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 -4.32337788234514 \cdot 10^{-89}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 5.121074390969514 \cdot 10^{+149}:\\ \;\;\;\;-\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} + b_2}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\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 -4.32337788234514 \cdot 10^{-89}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le 5.121074390969514 \cdot 10^{+149}:\\
\;\;\;\;-\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} + b_2}{a}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r671757 = b_2;
        double r671758 = -r671757;
        double r671759 = r671757 * r671757;
        double r671760 = a;
        double r671761 = c;
        double r671762 = r671760 * r671761;
        double r671763 = r671759 - r671762;
        double r671764 = sqrt(r671763);
        double r671765 = r671758 - r671764;
        double r671766 = r671765 / r671760;
        return r671766;
}

double f(double a, double b_2, double c) {
        double r671767 = b_2;
        double r671768 = -4.32337788234514e-89;
        bool r671769 = r671767 <= r671768;
        double r671770 = -0.5;
        double r671771 = c;
        double r671772 = r671771 / r671767;
        double r671773 = r671770 * r671772;
        double r671774 = 5.121074390969514e+149;
        bool r671775 = r671767 <= r671774;
        double r671776 = r671767 * r671767;
        double r671777 = a;
        double r671778 = r671771 * r671777;
        double r671779 = r671776 - r671778;
        double r671780 = sqrt(r671779);
        double r671781 = r671780 + r671767;
        double r671782 = r671781 / r671777;
        double r671783 = -r671782;
        double r671784 = r671767 / r671777;
        double r671785 = -2.0;
        double r671786 = 0.5;
        double r671787 = r671767 / r671771;
        double r671788 = r671786 / r671787;
        double r671789 = fma(r671784, r671785, r671788);
        double r671790 = r671775 ? r671783 : r671789;
        double r671791 = r671769 ? r671773 : r671790;
        return r671791;
}

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 < -4.32337788234514e-89

    1. Initial program 52.3

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

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

    if -4.32337788234514e-89 < b_2 < 5.121074390969514e+149

    1. Initial program 12.3

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

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

      \[\leadsto \frac{1}{\color{blue}{a \cdot \frac{1}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}}\]
    6. Applied *-un-lft-identity12.5

      \[\leadsto \frac{\color{blue}{1 \cdot 1}}{a \cdot \frac{1}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}\]
    7. Applied times-frac12.5

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

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

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

      \[\leadsto -\color{blue}{\frac{b_2 + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]

    if 5.121074390969514e+149 < b_2

    1. Initial program 59.1

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

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

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

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

Reproduce

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