Average Error: 34.0 → 9.4
Time: 21.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 -3628086182808922216479727071860655520743000:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -7.975591029427466896519638178068898735928 \cdot 10^{-96}:\\ \;\;\;\;\frac{\frac{\frac{a}{\frac{\sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{c}}}{\sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{a}\\ \mathbf{elif}\;b_2 \le -5.358830408552924876342396298354647853638 \cdot 10^{-132}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 6.326287366549382745037046972324082366467 \cdot 10^{74}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\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 -3628086182808922216479727071860655520743000:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

\mathbf{elif}\;b_2 \le -5.358830408552924876342396298354647853638 \cdot 10^{-132}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le 6.326287366549382745037046972324082366467 \cdot 10^{74}:\\
\;\;\;\;\frac{-b_2}{a} - \frac{\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 r76144 = b_2;
        double r76145 = -r76144;
        double r76146 = r76144 * r76144;
        double r76147 = a;
        double r76148 = c;
        double r76149 = r76147 * r76148;
        double r76150 = r76146 - r76149;
        double r76151 = sqrt(r76150);
        double r76152 = r76145 - r76151;
        double r76153 = r76152 / r76147;
        return r76153;
}

double f(double a, double b_2, double c) {
        double r76154 = b_2;
        double r76155 = -3.628086182808922e+42;
        bool r76156 = r76154 <= r76155;
        double r76157 = -0.5;
        double r76158 = c;
        double r76159 = r76158 / r76154;
        double r76160 = r76157 * r76159;
        double r76161 = -7.975591029427467e-96;
        bool r76162 = r76154 <= r76161;
        double r76163 = a;
        double r76164 = r76154 * r76154;
        double r76165 = r76163 * r76158;
        double r76166 = r76164 - r76165;
        double r76167 = sqrt(r76166);
        double r76168 = r76167 - r76154;
        double r76169 = sqrt(r76168);
        double r76170 = r76169 / r76158;
        double r76171 = r76163 / r76170;
        double r76172 = r76171 / r76169;
        double r76173 = r76172 / r76163;
        double r76174 = -5.358830408552925e-132;
        bool r76175 = r76154 <= r76174;
        double r76176 = 6.326287366549383e+74;
        bool r76177 = r76154 <= r76176;
        double r76178 = -r76154;
        double r76179 = r76178 / r76163;
        double r76180 = r76167 / r76163;
        double r76181 = r76179 - r76180;
        double r76182 = 0.5;
        double r76183 = r76182 * r76159;
        double r76184 = 2.0;
        double r76185 = r76154 / r76163;
        double r76186 = r76184 * r76185;
        double r76187 = r76183 - r76186;
        double r76188 = r76177 ? r76181 : r76187;
        double r76189 = r76175 ? r76160 : r76188;
        double r76190 = r76162 ? r76173 : r76189;
        double r76191 = r76156 ? r76160 : r76190;
        return r76191;
}

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 < -3.628086182808922e+42 or -7.975591029427467e-96 < b_2 < -5.358830408552925e-132

    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 6.7

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

    if -3.628086182808922e+42 < b_2 < -7.975591029427467e-96

    1. Initial program 41.7

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

      \[\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. Simplified16.9

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

      \[\leadsto \frac{\frac{0 + a \cdot c}{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{a}\]
    6. Using strategy rm
    7. Applied add-sqr-sqrt17.1

      \[\leadsto \frac{\frac{0 + a \cdot c}{\color{blue}{\sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2} \cdot \sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}}{a}\]
    8. Applied associate-/r*17.1

      \[\leadsto \frac{\color{blue}{\frac{\frac{0 + a \cdot c}{\sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{\sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}}{a}\]
    9. Simplified15.8

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

    if -5.358830408552925e-132 < b_2 < 6.326287366549383e+74

    1. Initial program 11.6

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

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

    if 6.326287366549383e+74 < b_2

    1. Initial program 41.8

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Taylor expanded around inf 5.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 simplification9.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3628086182808922216479727071860655520743000:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -7.975591029427466896519638178068898735928 \cdot 10^{-96}:\\ \;\;\;\;\frac{\frac{\frac{a}{\frac{\sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{c}}}{\sqrt{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{a}\\ \mathbf{elif}\;b_2 \le -5.358830408552924876342396298354647853638 \cdot 10^{-132}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 6.326287366549382745037046972324082366467 \cdot 10^{74}:\\ \;\;\;\;\frac{-b_2}{a} - \frac{\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 2019322 
(FPCore (a b_2 c)
  :name "quad2m (problem 3.2.1, negative)"
  :precision binary64
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))