Average Error: 33.1 → 9.3
Time: 17.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 -1.1783617127509567 \cdot 10^{+133}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\ \mathbf{elif}\;b_2 \le 1.1310477508076152 \cdot 10^{-72}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \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 -1.1783617127509567 \cdot 10^{+133}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r431889 = b_2;
        double r431890 = -r431889;
        double r431891 = r431889 * r431889;
        double r431892 = a;
        double r431893 = c;
        double r431894 = r431892 * r431893;
        double r431895 = r431891 - r431894;
        double r431896 = sqrt(r431895);
        double r431897 = r431890 + r431896;
        double r431898 = r431897 / r431892;
        return r431898;
}

double f(double a, double b_2, double c) {
        double r431899 = b_2;
        double r431900 = -1.1783617127509567e+133;
        bool r431901 = r431899 <= r431900;
        double r431902 = 0.5;
        double r431903 = c;
        double r431904 = r431903 / r431899;
        double r431905 = r431902 * r431904;
        double r431906 = a;
        double r431907 = r431899 / r431906;
        double r431908 = 2.0;
        double r431909 = r431907 * r431908;
        double r431910 = r431905 - r431909;
        double r431911 = 1.1310477508076152e-72;
        bool r431912 = r431899 <= r431911;
        double r431913 = r431899 * r431899;
        double r431914 = r431903 * r431906;
        double r431915 = r431913 - r431914;
        double r431916 = sqrt(r431915);
        double r431917 = r431916 - r431899;
        double r431918 = r431917 / r431906;
        double r431919 = -0.5;
        double r431920 = r431904 * r431919;
        double r431921 = r431912 ? r431918 : r431920;
        double r431922 = r431901 ? r431910 : r431921;
        return r431922;
}

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 < -1.1783617127509567e+133

    1. Initial program 54.0

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified54.0

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

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

    if -1.1783617127509567e+133 < b_2 < 1.1310477508076152e-72

    1. Initial program 11.6

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified11.6

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

    if 1.1310477508076152e-72 < b_2

    1. Initial program 52.6

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified52.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.1783617127509567 \cdot 10^{+133}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\ \mathbf{elif}\;b_2 \le 1.1310477508076152 \cdot 10^{-72}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019137 
(FPCore (a b_2 c)
  :name "quad2p (problem 3.2.1, positive)"
  (/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))