Average Error: 34.0 → 8.5
Time: 24.5s
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 -5.260570947330360464594776218624123716053 \cdot 10^{-14}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -3.264171759716637915376042096528155176919 \cdot 10^{-294}:\\ \;\;\;\;\frac{a \cdot \frac{c}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 1.092877965036258569027964750097428917598 \cdot 10^{104}:\\ \;\;\;\;\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 -5.260570947330360464594776218624123716053 \cdot 10^{-14}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

\mathbf{elif}\;b_2 \le 1.092877965036258569027964750097428917598 \cdot 10^{104}:\\
\;\;\;\;\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 r5484838 = b_2;
        double r5484839 = -r5484838;
        double r5484840 = r5484838 * r5484838;
        double r5484841 = a;
        double r5484842 = c;
        double r5484843 = r5484841 * r5484842;
        double r5484844 = r5484840 - r5484843;
        double r5484845 = sqrt(r5484844);
        double r5484846 = r5484839 - r5484845;
        double r5484847 = r5484846 / r5484841;
        return r5484847;
}

double f(double a, double b_2, double c) {
        double r5484848 = b_2;
        double r5484849 = -5.2605709473303605e-14;
        bool r5484850 = r5484848 <= r5484849;
        double r5484851 = -0.5;
        double r5484852 = c;
        double r5484853 = r5484852 / r5484848;
        double r5484854 = r5484851 * r5484853;
        double r5484855 = -3.264171759716638e-294;
        bool r5484856 = r5484848 <= r5484855;
        double r5484857 = a;
        double r5484858 = r5484848 * r5484848;
        double r5484859 = r5484857 * r5484852;
        double r5484860 = r5484858 - r5484859;
        double r5484861 = sqrt(r5484860);
        double r5484862 = r5484861 - r5484848;
        double r5484863 = r5484852 / r5484862;
        double r5484864 = r5484857 * r5484863;
        double r5484865 = r5484864 / r5484857;
        double r5484866 = 1.0928779650362586e+104;
        bool r5484867 = r5484848 <= r5484866;
        double r5484868 = -r5484848;
        double r5484869 = r5484868 - r5484861;
        double r5484870 = r5484869 / r5484857;
        double r5484871 = 0.5;
        double r5484872 = r5484871 * r5484853;
        double r5484873 = 2.0;
        double r5484874 = r5484848 / r5484857;
        double r5484875 = r5484873 * r5484874;
        double r5484876 = r5484872 - r5484875;
        double r5484877 = r5484867 ? r5484870 : r5484876;
        double r5484878 = r5484856 ? r5484865 : r5484877;
        double r5484879 = r5484850 ? r5484854 : r5484878;
        return r5484879;
}

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 < -5.2605709473303605e-14

    1. Initial program 55.9

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

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

    if -5.2605709473303605e-14 < b_2 < -3.264171759716638e-294

    1. Initial program 26.5

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

      \[\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. Simplified18.3

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

      \[\leadsto \frac{\frac{a \cdot c}{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{a}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity18.3

      \[\leadsto \frac{\frac{a \cdot c}{\color{blue}{1 \cdot \left(\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2\right)}}}{a}\]
    8. Applied times-frac14.6

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

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

    if -3.264171759716638e-294 < b_2 < 1.0928779650362586e+104

    1. Initial program 9.6

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

    if 1.0928779650362586e+104 < b_2

    1. Initial program 47.7

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

      \[\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.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -5.260570947330360464594776218624123716053 \cdot 10^{-14}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -3.264171759716637915376042096528155176919 \cdot 10^{-294}:\\ \;\;\;\;\frac{a \cdot \frac{c}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 1.092877965036258569027964750097428917598 \cdot 10^{104}:\\ \;\;\;\;\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 2019173 
(FPCore (a b_2 c)
  :name "NMSE problem 3.2.1"
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))