Average Error: 33.9 → 10.9
Time: 5.1s
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 -2200.014963884743337985128164291381835938:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.332637431447364623268840018977048343656 \cdot 10^{-95}:\\ \;\;\;\;\frac{\frac{{b_2}^{2}}{a} - \frac{b_2 \cdot b_2 - a \cdot c}{a}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \mathbf{elif}\;b_2 \le -1.642868784686771959253301844332455949634 \cdot 10^{-124}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.578980439773996833308311441044417137702 \cdot 10^{94}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{2}}{\sqrt{b_2}} \cdot \frac{c}{\sqrt{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 -2200.014963884743337985128164291381835938:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r13991 = b_2;
        double r13992 = -r13991;
        double r13993 = r13991 * r13991;
        double r13994 = a;
        double r13995 = c;
        double r13996 = r13994 * r13995;
        double r13997 = r13993 - r13996;
        double r13998 = sqrt(r13997);
        double r13999 = r13992 - r13998;
        double r14000 = r13999 / r13994;
        return r14000;
}

double f(double a, double b_2, double c) {
        double r14001 = b_2;
        double r14002 = -2200.0149638847433;
        bool r14003 = r14001 <= r14002;
        double r14004 = -0.5;
        double r14005 = c;
        double r14006 = r14005 / r14001;
        double r14007 = r14004 * r14006;
        double r14008 = -2.3326374314473646e-95;
        bool r14009 = r14001 <= r14008;
        double r14010 = 2.0;
        double r14011 = pow(r14001, r14010);
        double r14012 = a;
        double r14013 = r14011 / r14012;
        double r14014 = r14001 * r14001;
        double r14015 = r14012 * r14005;
        double r14016 = r14014 - r14015;
        double r14017 = r14016 / r14012;
        double r14018 = r14013 - r14017;
        double r14019 = -r14001;
        double r14020 = sqrt(r14016);
        double r14021 = r14019 + r14020;
        double r14022 = r14018 / r14021;
        double r14023 = -1.642868784686772e-124;
        bool r14024 = r14001 <= r14023;
        double r14025 = 2.578980439773997e+94;
        bool r14026 = r14001 <= r14025;
        double r14027 = r14019 - r14020;
        double r14028 = r14027 / r14012;
        double r14029 = 0.5;
        double r14030 = sqrt(r14001);
        double r14031 = r14029 / r14030;
        double r14032 = r14005 / r14030;
        double r14033 = r14031 * r14032;
        double r14034 = r14001 / r14012;
        double r14035 = r14010 * r14034;
        double r14036 = r14033 - r14035;
        double r14037 = r14026 ? r14028 : r14036;
        double r14038 = r14024 ? r14007 : r14037;
        double r14039 = r14009 ? r14022 : r14038;
        double r14040 = r14003 ? r14007 : r14039;
        return r14040;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 4 regimes
  2. if b_2 < -2200.0149638847433 or -2.3326374314473646e-95 < b_2 < -1.642868784686772e-124

    1. Initial program 54.1

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

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

    if -2200.0149638847433 < b_2 < -2.3326374314473646e-95

    1. Initial program 36.5

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

      \[\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 flip--36.6

      \[\leadsto \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}}} \cdot \frac{1}{a}\]
    6. Applied associate-*l/36.6

      \[\leadsto \color{blue}{\frac{\left(\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}\right) \cdot \frac{1}{a}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}}\]
    7. Simplified36.5

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

    if -1.642868784686772e-124 < b_2 < 2.578980439773997e+94

    1. Initial program 11.5

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

      \[\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-inv11.5

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

    if 2.578980439773997e+94 < b_2

    1. Initial program 44.8

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt3.7

      \[\leadsto \frac{1}{2} \cdot \frac{c}{\color{blue}{\sqrt{b_2} \cdot \sqrt{b_2}}} - 2 \cdot \frac{b_2}{a}\]
    5. Applied *-un-lft-identity3.7

      \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{1 \cdot c}}{\sqrt{b_2} \cdot \sqrt{b_2}} - 2 \cdot \frac{b_2}{a}\]
    6. Applied times-frac3.7

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\left(\frac{1}{\sqrt{b_2}} \cdot \frac{c}{\sqrt{b_2}}\right)} - 2 \cdot \frac{b_2}{a}\]
    7. Applied associate-*r*3.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -2200.014963884743337985128164291381835938:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.332637431447364623268840018977048343656 \cdot 10^{-95}:\\ \;\;\;\;\frac{\frac{{b_2}^{2}}{a} - \frac{b_2 \cdot b_2 - a \cdot c}{a}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \mathbf{elif}\;b_2 \le -1.642868784686771959253301844332455949634 \cdot 10^{-124}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.578980439773996833308311441044417137702 \cdot 10^{94}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{2}}{\sqrt{b_2}} \cdot \frac{c}{\sqrt{b_2}} - 2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

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