Average Error: 33.8 → 10.4
Time: 26.6s
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 -3.035199252453359 \cdot 10^{+123}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.6352743340081327 \cdot 10^{-34}:\\ \;\;\;\;\frac{\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le -1.0029215987945677 \cdot 10^{-54}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.003636336181468 \cdot 10^{-90}:\\ \;\;\;\;\frac{\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le -2.640735663015172 \cdot 10^{-160}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 9.336288915836175 \cdot 10^{+83}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-2, \frac{b_2}{a}, \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 -3.035199252453359 \cdot 10^{+123}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

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

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

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r3349734 = b_2;
        double r3349735 = -r3349734;
        double r3349736 = r3349734 * r3349734;
        double r3349737 = a;
        double r3349738 = c;
        double r3349739 = r3349737 * r3349738;
        double r3349740 = r3349736 - r3349739;
        double r3349741 = sqrt(r3349740);
        double r3349742 = r3349735 - r3349741;
        double r3349743 = r3349742 / r3349737;
        return r3349743;
}

double f(double a, double b_2, double c) {
        double r3349744 = b_2;
        double r3349745 = -3.035199252453359e+123;
        bool r3349746 = r3349744 <= r3349745;
        double r3349747 = -0.5;
        double r3349748 = c;
        double r3349749 = r3349748 / r3349744;
        double r3349750 = r3349747 * r3349749;
        double r3349751 = -1.6352743340081327e-34;
        bool r3349752 = r3349744 <= r3349751;
        double r3349753 = a;
        double r3349754 = r3349753 * r3349748;
        double r3349755 = r3349744 * r3349744;
        double r3349756 = r3349755 - r3349755;
        double r3349757 = r3349754 + r3349756;
        double r3349758 = r3349755 - r3349754;
        double r3349759 = sqrt(r3349758);
        double r3349760 = r3349759 - r3349744;
        double r3349761 = r3349757 / r3349760;
        double r3349762 = r3349761 / r3349753;
        double r3349763 = -1.0029215987945677e-54;
        bool r3349764 = r3349744 <= r3349763;
        double r3349765 = -1.003636336181468e-90;
        bool r3349766 = r3349744 <= r3349765;
        double r3349767 = -2.640735663015172e-160;
        bool r3349768 = r3349744 <= r3349767;
        double r3349769 = 9.336288915836175e+83;
        bool r3349770 = r3349744 <= r3349769;
        double r3349771 = 1.0;
        double r3349772 = -r3349744;
        double r3349773 = r3349772 - r3349759;
        double r3349774 = r3349753 / r3349773;
        double r3349775 = r3349771 / r3349774;
        double r3349776 = -2.0;
        double r3349777 = r3349744 / r3349753;
        double r3349778 = 0.5;
        double r3349779 = r3349744 / r3349748;
        double r3349780 = r3349778 / r3349779;
        double r3349781 = fma(r3349776, r3349777, r3349780);
        double r3349782 = r3349770 ? r3349775 : r3349781;
        double r3349783 = r3349768 ? r3349750 : r3349782;
        double r3349784 = r3349766 ? r3349762 : r3349783;
        double r3349785 = r3349764 ? r3349750 : r3349784;
        double r3349786 = r3349752 ? r3349762 : r3349785;
        double r3349787 = r3349746 ? r3349750 : r3349786;
        return r3349787;
}

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 < -3.035199252453359e+123 or -1.6352743340081327e-34 < b_2 < -1.0029215987945677e-54 or -1.003636336181468e-90 < b_2 < -2.640735663015172e-160

    1. Initial program 52.4

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

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

    if -3.035199252453359e+123 < b_2 < -1.6352743340081327e-34 or -1.0029215987945677e-54 < b_2 < -1.003636336181468e-90

    1. Initial program 45.0

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

      \[\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. Simplified15.4

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

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

    if -2.640735663015172e-160 < b_2 < 9.336288915836175e+83

    1. Initial program 10.9

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity10.9

      \[\leadsto \frac{\color{blue}{1 \cdot \left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]
    4. Applied associate-/l*11.0

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

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

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

    if 9.336288915836175e+83 < b_2

    1. Initial program 42.5

      \[\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(-2, \frac{b_2}{a}, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification10.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.035199252453359 \cdot 10^{+123}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.6352743340081327 \cdot 10^{-34}:\\ \;\;\;\;\frac{\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le -1.0029215987945677 \cdot 10^{-54}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.003636336181468 \cdot 10^{-90}:\\ \;\;\;\;\frac{\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le -2.640735663015172 \cdot 10^{-160}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 9.336288915836175 \cdot 10^{+83}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-2, \frac{b_2}{a}, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019142 +o rules:numerics
(FPCore (a b_2 c)
  :name "NMSE problem 3.2.1"
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))