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

\mathbf{elif}\;b_2 \le 1.9238883452280037 \cdot 10^{-130}:\\
\;\;\;\;0 - \frac{b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\

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

\mathbf{else}:\\
\;\;\;\;0 - \frac{1}{2} \cdot \frac{c}{b_2}\\

\end{array}
double f(double a, double b_2, double c) {
        double r14441 = b_2;
        double r14442 = -r14441;
        double r14443 = r14441 * r14441;
        double r14444 = a;
        double r14445 = c;
        double r14446 = r14444 * r14445;
        double r14447 = r14443 - r14446;
        double r14448 = sqrt(r14447);
        double r14449 = r14442 + r14448;
        double r14450 = r14449 / r14444;
        return r14450;
}

double f(double a, double b_2, double c) {
        double r14451 = b_2;
        double r14452 = -2.377497022722549e+101;
        bool r14453 = r14451 <= r14452;
        double r14454 = 0.0;
        double r14455 = 2.0;
        double r14456 = a;
        double r14457 = r14451 / r14456;
        double r14458 = r14455 * r14457;
        double r14459 = 0.5;
        double r14460 = c;
        double r14461 = r14460 / r14451;
        double r14462 = r14459 * r14461;
        double r14463 = r14458 - r14462;
        double r14464 = r14454 - r14463;
        double r14465 = 1.9238883452280037e-130;
        bool r14466 = r14451 <= r14465;
        double r14467 = r14451 * r14451;
        double r14468 = r14456 * r14460;
        double r14469 = r14467 - r14468;
        double r14470 = sqrt(r14469);
        double r14471 = r14451 - r14470;
        double r14472 = r14471 / r14456;
        double r14473 = r14454 - r14472;
        double r14474 = 4.019930844191633e+109;
        bool r14475 = r14451 <= r14474;
        double r14476 = r14454 + r14468;
        double r14477 = r14451 + r14470;
        double r14478 = r14476 / r14477;
        double r14479 = r14478 / r14456;
        double r14480 = r14454 - r14479;
        double r14481 = r14454 - r14462;
        double r14482 = r14475 ? r14480 : r14481;
        double r14483 = r14466 ? r14473 : r14482;
        double r14484 = r14453 ? r14464 : r14483;
        return r14484;
}

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. Using strategy rm
    3. Applied neg-sub047.1

      \[\leadsto \frac{\color{blue}{\left(0 - b_2\right)} + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied associate-+l-47.1

      \[\leadsto \frac{\color{blue}{0 - \left(b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]
    5. Applied div-sub47.1

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

      \[\leadsto \color{blue}{0} - \frac{b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    7. Taylor expanded around -inf 3.6

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

    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 neg-sub011.9

      \[\leadsto \frac{\color{blue}{\left(0 - b_2\right)} + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied associate-+l-11.9

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

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

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

    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 neg-sub040.3

      \[\leadsto \frac{\color{blue}{\left(0 - b_2\right)} + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied associate-+l-40.3

      \[\leadsto \frac{\color{blue}{0 - \left(b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}{a}\]
    5. Applied div-sub40.3

      \[\leadsto \color{blue}{\frac{0}{a} - \frac{b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    6. Simplified40.3

      \[\leadsto \color{blue}{0} - \frac{b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    7. Using strategy rm
    8. Applied flip--40.3

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

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

    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 neg-sub059.9

      \[\leadsto \frac{\color{blue}{\left(0 - b_2\right)} + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied associate-+l-59.9

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

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

      \[\leadsto \color{blue}{0} - \frac{b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    7. Taylor expanded around inf 2.4

      \[\leadsto 0 - \color{blue}{\frac{1}{2} \cdot \frac{c}{b_2}}\]
  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}:\\ \;\;\;\;0 - \left(2 \cdot \frac{b_2}{a} - \frac{1}{2} \cdot \frac{c}{b_2}\right)\\ \mathbf{elif}\;b_2 \le 1.9238883452280037 \cdot 10^{-130}:\\ \;\;\;\;0 - \frac{b_2 - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\ \mathbf{elif}\;b_2 \le 4.01993084419163312 \cdot 10^{109}:\\ \;\;\;\;0 - \frac{\frac{0 + a \cdot c}{b_2 + \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\\ \mathbf{else}:\\ \;\;\;\;0 - \frac{1}{2} \cdot \frac{c}{b_2}\\ \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))