Average Error: 34.3 → 8.6
Time: 13.8s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.569310777886352095486911207889814773134 \cdot 10^{111}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le \frac{-8633006810733365}{2.808895523222368605827039360607851146278 \cdot 10^{306}}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{1 \cdot \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{a}\\ \mathbf{elif}\;b \le 1.447939350868406385811948663168665665979 \cdot 10^{78}:\\ \;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -1.569310777886352095486911207889814773134 \cdot 10^{111}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

\mathbf{elif}\;b \le \frac{-8633006810733365}{2.808895523222368605827039360607851146278 \cdot 10^{306}}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{1 \cdot \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{a}\\

\mathbf{elif}\;b \le 1.447939350868406385811948663168665665979 \cdot 10^{78}:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\

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

\end{array}
double f(double a, double b, double c) {
        double r37213 = b;
        double r37214 = -r37213;
        double r37215 = r37213 * r37213;
        double r37216 = 4.0;
        double r37217 = a;
        double r37218 = r37216 * r37217;
        double r37219 = c;
        double r37220 = r37218 * r37219;
        double r37221 = r37215 - r37220;
        double r37222 = sqrt(r37221);
        double r37223 = r37214 + r37222;
        double r37224 = 2.0;
        double r37225 = r37224 * r37217;
        double r37226 = r37223 / r37225;
        return r37226;
}

double f(double a, double b, double c) {
        double r37227 = b;
        double r37228 = -1.569310777886352e+111;
        bool r37229 = r37227 <= r37228;
        double r37230 = 1.0;
        double r37231 = c;
        double r37232 = r37231 / r37227;
        double r37233 = a;
        double r37234 = r37227 / r37233;
        double r37235 = r37232 - r37234;
        double r37236 = r37230 * r37235;
        double r37237 = -8633006810733365.0;
        double r37238 = 2.8088955232223686e+306;
        double r37239 = r37237 / r37238;
        bool r37240 = r37227 <= r37239;
        double r37241 = 1.0;
        double r37242 = 2.0;
        double r37243 = r37241 / r37242;
        double r37244 = -r37227;
        double r37245 = r37227 * r37227;
        double r37246 = 4.0;
        double r37247 = r37246 * r37233;
        double r37248 = r37247 * r37231;
        double r37249 = r37245 - r37248;
        double r37250 = sqrt(r37249);
        double r37251 = r37244 + r37250;
        double r37252 = r37241 * r37251;
        double r37253 = r37252 / r37233;
        double r37254 = r37243 * r37253;
        double r37255 = 1.4479393508684064e+78;
        bool r37256 = r37227 <= r37255;
        double r37257 = 2.0;
        double r37258 = pow(r37227, r37257);
        double r37259 = r37258 - r37258;
        double r37260 = r37233 * r37231;
        double r37261 = r37246 * r37260;
        double r37262 = r37259 + r37261;
        double r37263 = r37242 * r37233;
        double r37264 = r37262 / r37263;
        double r37265 = r37244 - r37250;
        double r37266 = r37264 / r37265;
        double r37267 = -1.0;
        double r37268 = r37267 * r37232;
        double r37269 = r37256 ? r37266 : r37268;
        double r37270 = r37240 ? r37254 : r37269;
        double r37271 = r37229 ? r37236 : r37270;
        return r37271;
}

Error

Bits error versus a

Bits error versus b

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 < -1.569310777886352e+111

    1. Initial program 50.4

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

      \[\leadsto \color{blue}{1 \cdot \frac{c}{b} - 1 \cdot \frac{b}{a}}\]
    3. Simplified3.9

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

    if -1.569310777886352e+111 < b < -3.07345244398039e-291

    1. Initial program 8.4

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num8.6

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity8.6

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\color{blue}{1 \cdot \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}}\]
    6. Applied times-frac8.6

      \[\leadsto \frac{1}{\color{blue}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}\]
    7. Applied add-sqr-sqrt8.6

      \[\leadsto \frac{\color{blue}{\sqrt{1} \cdot \sqrt{1}}}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\]
    8. Applied times-frac8.6

      \[\leadsto \color{blue}{\frac{\sqrt{1}}{\frac{2}{1}} \cdot \frac{\sqrt{1}}{\frac{a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}\]
    9. Simplified8.6

      \[\leadsto \color{blue}{\frac{1}{2}} \cdot \frac{\sqrt{1}}{\frac{a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\]
    10. Simplified8.4

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

    if -3.07345244398039e-291 < b < 1.4479393508684064e+78

    1. Initial program 30.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num30.7

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

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\color{blue}{\frac{\left(-b\right) \cdot \left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}}\]
    6. Applied associate-/r/30.8

      \[\leadsto \frac{1}{\color{blue}{\frac{2 \cdot a}{\left(-b\right) \cdot \left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}\]
    7. Applied associate-/r*30.9

      \[\leadsto \color{blue}{\frac{\frac{1}{\frac{2 \cdot a}{\left(-b\right) \cdot \left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\]
    8. Simplified15.9

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

    if 1.4479393508684064e+78 < b

    1. Initial program 58.7

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

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification8.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.569310777886352095486911207889814773134 \cdot 10^{111}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le \frac{-8633006810733365}{2.808895523222368605827039360607851146278 \cdot 10^{306}}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{1 \cdot \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{a}\\ \mathbf{elif}\;b \le 1.447939350868406385811948663168665665979 \cdot 10^{78}:\\ \;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019303 
(FPCore (a b c)
  :name "Quadratic roots, full range"
  :precision binary64
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))