Average Error: 34.6 → 10.5
Time: 30.4s
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.4003426496549383 \cdot 10^{-77}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.466065355378786 \cdot 10^{-87}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{1}}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{elif}\;b_2 \le -6.27327853977469935 \cdot 10^{-139}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 1.57632464397167146 \cdot 10^{69}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b_2}{a} - \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 -3.4003426496549383 \cdot 10^{-77}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le -1.466065355378786 \cdot 10^{-87}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{1}}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}\\

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

\mathbf{elif}\;b_2 \le 1.57632464397167146 \cdot 10^{69}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\

\mathbf{else}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{b_2}{a}\\

\end{array}
double f(double a, double b_2, double c) {
        double r189090 = b_2;
        double r189091 = -r189090;
        double r189092 = r189090 * r189090;
        double r189093 = a;
        double r189094 = c;
        double r189095 = r189093 * r189094;
        double r189096 = r189092 - r189095;
        double r189097 = sqrt(r189096);
        double r189098 = r189091 - r189097;
        double r189099 = r189098 / r189093;
        return r189099;
}

double f(double a, double b_2, double c) {
        double r189100 = b_2;
        double r189101 = -3.4003426496549383e-77;
        bool r189102 = r189100 <= r189101;
        double r189103 = -0.5;
        double r189104 = c;
        double r189105 = r189104 / r189100;
        double r189106 = r189103 * r189105;
        double r189107 = -1.466065355378786e-87;
        bool r189108 = r189100 <= r189107;
        double r189109 = -r189100;
        double r189110 = a;
        double r189111 = r189109 / r189110;
        double r189112 = 1.0;
        double r189113 = sqrt(r189112);
        double r189114 = r189100 * r189100;
        double r189115 = r189110 * r189104;
        double r189116 = r189114 - r189115;
        double r189117 = sqrt(r189116);
        double r189118 = r189110 / r189117;
        double r189119 = r189113 / r189118;
        double r189120 = r189111 - r189119;
        double r189121 = -6.273278539774699e-139;
        bool r189122 = r189100 <= r189121;
        double r189123 = 1.5763246439716715e+69;
        bool r189124 = r189100 <= r189123;
        double r189125 = r189117 / r189110;
        double r189126 = r189111 - r189125;
        double r189127 = r189100 / r189110;
        double r189128 = r189111 - r189127;
        double r189129 = r189124 ? r189126 : r189128;
        double r189130 = r189122 ? r189106 : r189129;
        double r189131 = r189108 ? r189120 : r189130;
        double r189132 = r189102 ? r189106 : r189131;
        return r189132;
}

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 < -3.4003426496549383e-77 or -1.466065355378786e-87 < b_2 < -6.273278539774699e-139

    1. Initial program 51.1

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

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

    if -3.4003426496549383e-77 < b_2 < -1.466065355378786e-87

    1. Initial program 28.6

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

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity28.6

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

      \[\leadsto \frac{-b_2}{a} - \frac{\color{blue}{\sqrt{1} \cdot \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    7. Applied associate-/l*28.8

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

    if -6.273278539774699e-139 < b_2 < 1.5763246439716715e+69

    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-sub11.5

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

    if 1.5763246439716715e+69 < b_2

    1. Initial program 42.5

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

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity42.5

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

      \[\leadsto \frac{-b_2}{a} - \frac{\color{blue}{\sqrt{1} \cdot \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    7. Applied associate-/l*42.6

      \[\leadsto \frac{-b_2}{a} - \color{blue}{\frac{\sqrt{1}}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}}\]
    8. Taylor expanded around 0 5.0

      \[\leadsto \frac{-b_2}{a} - \color{blue}{\frac{b_2}{a}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification10.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.4003426496549383 \cdot 10^{-77}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -1.466065355378786 \cdot 10^{-87}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{1}}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{elif}\;b_2 \le -6.27327853977469935 \cdot 10^{-139}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 1.57632464397167146 \cdot 10^{69}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{b_2}{a}\\ \end{array}\]

Reproduce

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