Average Error: 33.8 → 9.9
Time: 31.3s
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.8424248185280593 \cdot 10^{-34}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.276690291884487 \cdot 10^{80}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{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 -3.8424248185280593 \cdot 10^{-34}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r63971 = b_2;
        double r63972 = -r63971;
        double r63973 = r63971 * r63971;
        double r63974 = a;
        double r63975 = c;
        double r63976 = r63974 * r63975;
        double r63977 = r63973 - r63976;
        double r63978 = sqrt(r63977);
        double r63979 = r63972 - r63978;
        double r63980 = r63979 / r63974;
        return r63980;
}

double f(double a, double b_2, double c) {
        double r63981 = b_2;
        double r63982 = -3.8424248185280593e-34;
        bool r63983 = r63981 <= r63982;
        double r63984 = -0.5;
        double r63985 = c;
        double r63986 = r63985 / r63981;
        double r63987 = r63984 * r63986;
        double r63988 = 2.2766902918844874e+80;
        bool r63989 = r63981 <= r63988;
        double r63990 = -r63981;
        double r63991 = r63981 * r63981;
        double r63992 = a;
        double r63993 = r63992 * r63985;
        double r63994 = r63991 - r63993;
        double r63995 = sqrt(r63994);
        double r63996 = r63990 - r63995;
        double r63997 = 1.0;
        double r63998 = r63997 / r63992;
        double r63999 = r63996 * r63998;
        double r64000 = -2.0;
        double r64001 = r63981 / r63992;
        double r64002 = r64000 * r64001;
        double r64003 = r63989 ? r63999 : r64002;
        double r64004 = r63983 ? r63987 : r64003;
        return r64004;
}

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 < -3.8424248185280593e-34

    1. Initial program 54.2

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

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

    if -3.8424248185280593e-34 < b_2 < 2.2766902918844874e+80

    1. Initial program 13.9

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

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

    if 2.2766902918844874e+80 < b_2

    1. Initial program 44.4

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.8424248185280593 \cdot 10^{-34}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.276690291884487 \cdot 10^{80}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;-2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

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