Average Error: 34.3 → 10.3
Time: 23.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 -2.068787453924659787754027441129039063224 \cdot 10^{-76}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.360908374051695590422690701366520544893 \cdot 10^{86}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(-2, b_2, \frac{a \cdot \frac{1}{2}}{\frac{b_2}{c}}\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 -2.068787453924659787754027441129039063224 \cdot 10^{-76}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r3385764 = b_2;
        double r3385765 = -r3385764;
        double r3385766 = r3385764 * r3385764;
        double r3385767 = a;
        double r3385768 = c;
        double r3385769 = r3385767 * r3385768;
        double r3385770 = r3385766 - r3385769;
        double r3385771 = sqrt(r3385770);
        double r3385772 = r3385765 - r3385771;
        double r3385773 = r3385772 / r3385767;
        return r3385773;
}

double f(double a, double b_2, double c) {
        double r3385774 = b_2;
        double r3385775 = -2.0687874539246598e-76;
        bool r3385776 = r3385774 <= r3385775;
        double r3385777 = -0.5;
        double r3385778 = c;
        double r3385779 = r3385778 / r3385774;
        double r3385780 = r3385777 * r3385779;
        double r3385781 = 2.3609083740516956e+86;
        bool r3385782 = r3385774 <= r3385781;
        double r3385783 = -r3385774;
        double r3385784 = r3385774 * r3385774;
        double r3385785 = a;
        double r3385786 = r3385785 * r3385778;
        double r3385787 = r3385784 - r3385786;
        double r3385788 = sqrt(r3385787);
        double r3385789 = r3385783 - r3385788;
        double r3385790 = 1.0;
        double r3385791 = r3385790 / r3385785;
        double r3385792 = r3385789 * r3385791;
        double r3385793 = -2.0;
        double r3385794 = 0.5;
        double r3385795 = r3385785 * r3385794;
        double r3385796 = r3385774 / r3385778;
        double r3385797 = r3385795 / r3385796;
        double r3385798 = fma(r3385793, r3385774, r3385797);
        double r3385799 = r3385798 / r3385785;
        double r3385800 = r3385782 ? r3385792 : r3385799;
        double r3385801 = r3385776 ? r3385780 : r3385800;
        return r3385801;
}

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 < -2.0687874539246598e-76

    1. Initial program 52.9

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

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

    if -2.0687874539246598e-76 < b_2 < 2.3609083740516956e+86

    1. Initial program 13.1

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

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

    if 2.3609083740516956e+86 < b_2

    1. Initial program 44.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -2.068787453924659787754027441129039063224 \cdot 10^{-76}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.360908374051695590422690701366520544893 \cdot 10^{86}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(-2, b_2, \frac{a \cdot \frac{1}{2}}{\frac{b_2}{c}}\right)}{a}\\ \end{array}\]

Reproduce

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