Average Error: 34.1 → 9.2
Time: 4.8s
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.37749702272254886 \cdot 10^{101}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le 1.9238883452280037 \cdot 10^{-130}:\\ \;\;\;\;{\left(\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\right)}^{1}\\ \mathbf{elif}\;b_2 \le 4.01993084419163312 \cdot 10^{109}:\\ \;\;\;\;{\left(\frac{\frac{0 + a \cdot c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\right)}^{1}\\ \mathbf{else}:\\ \;\;\;\;{\left(\frac{-1}{2} \cdot \frac{c}{b_2}\right)}^{1}\\ \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.37749702272254886 \cdot 10^{101}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\

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

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

\mathbf{else}:\\
\;\;\;\;{\left(\frac{-1}{2} \cdot \frac{c}{b_2}\right)}^{1}\\

\end{array}
double f(double a, double b_2, double c) {
        double r14913 = b_2;
        double r14914 = -r14913;
        double r14915 = r14913 * r14913;
        double r14916 = a;
        double r14917 = c;
        double r14918 = r14916 * r14917;
        double r14919 = r14915 - r14918;
        double r14920 = sqrt(r14919);
        double r14921 = r14914 + r14920;
        double r14922 = r14921 / r14916;
        return r14922;
}

double f(double a, double b_2, double c) {
        double r14923 = b_2;
        double r14924 = -2.377497022722549e+101;
        bool r14925 = r14923 <= r14924;
        double r14926 = 0.5;
        double r14927 = c;
        double r14928 = r14927 / r14923;
        double r14929 = r14926 * r14928;
        double r14930 = 2.0;
        double r14931 = a;
        double r14932 = r14923 / r14931;
        double r14933 = r14930 * r14932;
        double r14934 = r14929 - r14933;
        double r14935 = 1.9238883452280037e-130;
        bool r14936 = r14923 <= r14935;
        double r14937 = -r14923;
        double r14938 = r14923 * r14923;
        double r14939 = r14931 * r14927;
        double r14940 = r14938 - r14939;
        double r14941 = sqrt(r14940);
        double r14942 = r14937 + r14941;
        double r14943 = r14942 / r14931;
        double r14944 = 1.0;
        double r14945 = pow(r14943, r14944);
        double r14946 = 4.019930844191633e+109;
        bool r14947 = r14923 <= r14946;
        double r14948 = 0.0;
        double r14949 = r14948 + r14939;
        double r14950 = r14937 - r14941;
        double r14951 = r14949 / r14950;
        double r14952 = r14951 / r14931;
        double r14953 = pow(r14952, r14944);
        double r14954 = -0.5;
        double r14955 = r14954 * r14928;
        double r14956 = pow(r14955, r14944);
        double r14957 = r14947 ? r14953 : r14956;
        double r14958 = r14936 ? r14945 : r14957;
        double r14959 = r14925 ? r14934 : r14958;
        return r14959;
}

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.377497022722549e+101

    1. Initial program 47.1

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

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

    if -2.377497022722549e+101 < b_2 < 1.9238883452280037e-130

    1. Initial program 11.9

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

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

    if 1.9238883452280037e-130 < b_2 < 4.019930844191633e+109

    1. Initial program 40.3

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

      \[\leadsto \color{blue}{{\left(\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\right)}^{1}}\]
    4. Using strategy rm
    5. Applied flip-+40.3

      \[\leadsto {\left(\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}\right)}^{1}\]
    6. Simplified15.5

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

    if 4.019930844191633e+109 < b_2

    1. Initial program 59.9

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -2.37749702272254886 \cdot 10^{101}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le 1.9238883452280037 \cdot 10^{-130}:\\ \;\;\;\;{\left(\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\right)}^{1}\\ \mathbf{elif}\;b_2 \le 4.01993084419163312 \cdot 10^{109}:\\ \;\;\;\;{\left(\frac{\frac{0 + a \cdot c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\right)}^{1}\\ \mathbf{else}:\\ \;\;\;\;{\left(\frac{-1}{2} \cdot \frac{c}{b_2}\right)}^{1}\\ \end{array}\]

Reproduce

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