Average Error: 33.9 → 8.7
Time: 23.0s
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.968339104808995575492318760699662265421 \cdot 10^{-12}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.56941837498823591489155962868807522273 \cdot 10^{-254}:\\ \;\;\;\;\frac{\frac{1}{\frac{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}{c}}}{a}\\ \mathbf{elif}\;b_2 \le 2.480029721366774241012772407230706250557 \cdot 10^{95}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{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 -2.968339104808995575492318760699662265421 \cdot 10^{-12}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r73182 = b_2;
        double r73183 = -r73182;
        double r73184 = r73182 * r73182;
        double r73185 = a;
        double r73186 = c;
        double r73187 = r73185 * r73186;
        double r73188 = r73184 - r73187;
        double r73189 = sqrt(r73188);
        double r73190 = r73183 - r73189;
        double r73191 = r73190 / r73185;
        return r73191;
}

double f(double a, double b_2, double c) {
        double r73192 = b_2;
        double r73193 = -2.9683391048089956e-12;
        bool r73194 = r73192 <= r73193;
        double r73195 = -0.5;
        double r73196 = c;
        double r73197 = r73196 / r73192;
        double r73198 = r73195 * r73197;
        double r73199 = -2.569418374988236e-254;
        bool r73200 = r73192 <= r73199;
        double r73201 = 1.0;
        double r73202 = r73192 * r73192;
        double r73203 = a;
        double r73204 = r73203 * r73196;
        double r73205 = r73202 - r73204;
        double r73206 = sqrt(r73205);
        double r73207 = r73206 - r73192;
        double r73208 = r73207 / r73203;
        double r73209 = r73208 / r73196;
        double r73210 = r73201 / r73209;
        double r73211 = r73210 / r73203;
        double r73212 = 2.4800297213667742e+95;
        bool r73213 = r73192 <= r73212;
        double r73214 = -r73192;
        double r73215 = r73214 - r73206;
        double r73216 = r73215 / r73203;
        double r73217 = 0.5;
        double r73218 = r73217 * r73197;
        double r73219 = 2.0;
        double r73220 = r73192 / r73203;
        double r73221 = r73219 * r73220;
        double r73222 = r73218 - r73221;
        double r73223 = r73213 ? r73216 : r73222;
        double r73224 = r73200 ? r73211 : r73223;
        double r73225 = r73194 ? r73198 : r73224;
        return r73225;
}

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 < -2.9683391048089956e-12

    1. Initial program 55.3

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

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

    if -2.9683391048089956e-12 < b_2 < -2.569418374988236e-254

    1. Initial program 28.9

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

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

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

      \[\leadsto \frac{\frac{0 + a \cdot c}{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{a}\]
    6. Using strategy rm
    7. Applied clear-num19.5

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{0 + a \cdot c}}}}{a}\]
    8. Simplified16.1

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

    if -2.569418374988236e-254 < b_2 < 2.4800297213667742e+95

    1. Initial program 9.8

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

    if 2.4800297213667742e+95 < b_2

    1. Initial program 44.3

      \[\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. Recombined 4 regimes into one program.
  4. Final simplification8.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -2.968339104808995575492318760699662265421 \cdot 10^{-12}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.56941837498823591489155962868807522273 \cdot 10^{-254}:\\ \;\;\;\;\frac{\frac{1}{\frac{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}{c}}}{a}\\ \mathbf{elif}\;b_2 \le 2.480029721366774241012772407230706250557 \cdot 10^{95}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019294 
(FPCore (a b_2 c)
  :name "NMSE problem 3.2.1"
  :precision binary64
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))