Average Error: 32.6 → 9.6
Time: 20.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 -6.90131991727783 \cdot 10^{-39}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 4.012768074517757 \cdot 10^{+87}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - c \cdot a}}}\\ \mathbf{else}:\\ \;\;\;\;-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 -6.90131991727783 \cdot 10^{-39}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r1908988 = b_2;
        double r1908989 = -r1908988;
        double r1908990 = r1908988 * r1908988;
        double r1908991 = a;
        double r1908992 = c;
        double r1908993 = r1908991 * r1908992;
        double r1908994 = r1908990 - r1908993;
        double r1908995 = sqrt(r1908994);
        double r1908996 = r1908989 - r1908995;
        double r1908997 = r1908996 / r1908991;
        return r1908997;
}

double f(double a, double b_2, double c) {
        double r1908998 = b_2;
        double r1908999 = -6.90131991727783e-39;
        bool r1909000 = r1908998 <= r1908999;
        double r1909001 = -0.5;
        double r1909002 = c;
        double r1909003 = r1909002 / r1908998;
        double r1909004 = r1909001 * r1909003;
        double r1909005 = 4.012768074517757e+87;
        bool r1909006 = r1908998 <= r1909005;
        double r1909007 = 1.0;
        double r1909008 = a;
        double r1909009 = -r1908998;
        double r1909010 = r1908998 * r1908998;
        double r1909011 = r1909002 * r1909008;
        double r1909012 = r1909010 - r1909011;
        double r1909013 = sqrt(r1909012);
        double r1909014 = r1909009 - r1909013;
        double r1909015 = r1909008 / r1909014;
        double r1909016 = r1909007 / r1909015;
        double r1909017 = -2.0;
        double r1909018 = r1908998 / r1909008;
        double r1909019 = r1909017 * r1909018;
        double r1909020 = r1909006 ? r1909016 : r1909019;
        double r1909021 = r1909000 ? r1909004 : r1909020;
        return r1909021;
}

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 3 regimes
  2. if b_2 < -6.90131991727783e-39

    1. Initial program 53.0

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

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    4. Taylor expanded around -inf 7.9

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

    if -6.90131991727783e-39 < b_2 < 4.012768074517757e+87

    1. Initial program 13.2

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

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

    if 4.012768074517757e+87 < b_2

    1. Initial program 41.3

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

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

      \[\leadsto \color{blue}{-2 \cdot \frac{b_2}{a}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification9.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -6.90131991727783 \cdot 10^{-39}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 4.012768074517757 \cdot 10^{+87}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - c \cdot a}}}\\ \mathbf{else}:\\ \;\;\;\;-2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

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