Average Error: 34.5 → 8.3
Time: 5.2s
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 -13333671538923874300:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -4.95187817907829912 \cdot 10^{-284}:\\ \;\;\;\;\frac{\frac{a}{\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{c}}}{a}\\ \mathbf{elif}\;b_2 \le 1.14497685072666721 \cdot 10^{139}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{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 -13333671538923874300:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

\mathbf{elif}\;b_2 \le 1.14497685072666721 \cdot 10^{139}:\\
\;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{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 r14530 = b_2;
        double r14531 = -r14530;
        double r14532 = r14530 * r14530;
        double r14533 = a;
        double r14534 = c;
        double r14535 = r14533 * r14534;
        double r14536 = r14532 - r14535;
        double r14537 = sqrt(r14536);
        double r14538 = r14531 - r14537;
        double r14539 = r14538 / r14533;
        return r14539;
}

double f(double a, double b_2, double c) {
        double r14540 = b_2;
        double r14541 = -1.3333671538923874e+19;
        bool r14542 = r14540 <= r14541;
        double r14543 = -0.5;
        double r14544 = c;
        double r14545 = r14544 / r14540;
        double r14546 = r14543 * r14545;
        double r14547 = -4.951878179078299e-284;
        bool r14548 = r14540 <= r14547;
        double r14549 = a;
        double r14550 = -r14540;
        double r14551 = r14540 * r14540;
        double r14552 = r14549 * r14544;
        double r14553 = r14551 - r14552;
        double r14554 = sqrt(r14553);
        double r14555 = r14550 + r14554;
        double r14556 = r14555 / r14544;
        double r14557 = r14549 / r14556;
        double r14558 = r14557 / r14549;
        double r14559 = 1.1449768507266672e+139;
        bool r14560 = r14540 <= r14559;
        double r14561 = r14550 - r14554;
        double r14562 = 1.0;
        double r14563 = r14562 / r14549;
        double r14564 = r14561 * r14563;
        double r14565 = 0.5;
        double r14566 = r14565 * r14545;
        double r14567 = 2.0;
        double r14568 = r14540 / r14549;
        double r14569 = r14567 * r14568;
        double r14570 = r14566 - r14569;
        double r14571 = r14560 ? r14564 : r14570;
        double r14572 = r14548 ? r14558 : r14571;
        double r14573 = r14542 ? r14546 : r14572;
        return r14573;
}

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 < -1.3333671538923874e+19

    1. Initial program 56.5

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

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

    if -1.3333671538923874e+19 < b_2 < -4.951878179078299e-284

    1. Initial program 29.4

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

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

      \[\leadsto \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}}} \cdot \frac{1}{a}\]
    6. Applied frac-times34.4

      \[\leadsto \color{blue}{\frac{\left(\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}\right) \cdot 1}{\left(\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot a}}\]
    7. Simplified24.2

      \[\leadsto \frac{\color{blue}{0 + a \cdot c}}{\left(\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot a}\]
    8. Using strategy rm
    9. Applied associate-/r*18.4

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

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

    if -4.951878179078299e-284 < b_2 < 1.1449768507266672e+139

    1. Initial program 9.0

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

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

    if 1.1449768507266672e+139 < b_2

    1. Initial program 57.5

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -13333671538923874300:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -4.95187817907829912 \cdot 10^{-284}:\\ \;\;\;\;\frac{\frac{a}{\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{c}}}{a}\\ \mathbf{elif}\;b_2 \le 1.14497685072666721 \cdot 10^{139}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2020089 
(FPCore (a b_2 c)
  :name "quad2m (problem 3.2.1, negative)"
  :precision binary64
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))