Average Error: 33.7 → 6.7
Time: 10.3s
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 -3.12428337420519208 \cdot 10^{57}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{b_2 \cdot -2}{a}\right)\\ \mathbf{elif}\;b_2 \le -1.273959369302109 \cdot 10^{-247}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} + \left(-b_2\right)}{a}\\ \mathbf{elif}\;b_2 \le 4.1445535679869069 \cdot 10^{60}:\\ \;\;\;\;\frac{c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\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 -3.12428337420519208 \cdot 10^{57}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{b_2 \cdot -2}{a}\right)\\

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

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r19461 = b_2;
        double r19462 = -r19461;
        double r19463 = r19461 * r19461;
        double r19464 = a;
        double r19465 = c;
        double r19466 = r19464 * r19465;
        double r19467 = r19463 - r19466;
        double r19468 = sqrt(r19467);
        double r19469 = r19462 + r19468;
        double r19470 = r19469 / r19464;
        return r19470;
}

double f(double a, double b_2, double c) {
        double r19471 = b_2;
        double r19472 = -3.124283374205192e+57;
        bool r19473 = r19471 <= r19472;
        double r19474 = 0.5;
        double r19475 = c;
        double r19476 = r19475 / r19471;
        double r19477 = -2.0;
        double r19478 = r19471 * r19477;
        double r19479 = a;
        double r19480 = r19478 / r19479;
        double r19481 = fma(r19474, r19476, r19480);
        double r19482 = -1.273959369302109e-247;
        bool r19483 = r19471 <= r19482;
        double r19484 = r19471 * r19471;
        double r19485 = r19479 * r19475;
        double r19486 = r19484 - r19485;
        double r19487 = sqrt(r19486);
        double r19488 = -r19471;
        double r19489 = r19487 + r19488;
        double r19490 = r19489 / r19479;
        double r19491 = 4.144553567986907e+60;
        bool r19492 = r19471 <= r19491;
        double r19493 = r19488 - r19487;
        double r19494 = r19475 / r19493;
        double r19495 = -0.5;
        double r19496 = r19495 * r19476;
        double r19497 = r19492 ? r19494 : r19496;
        double r19498 = r19483 ? r19490 : r19497;
        double r19499 = r19473 ? r19481 : r19498;
        return r19499;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 4 regimes
  2. if b_2 < -3.124283374205192e+57

    1. Initial program 39.4

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}}\]
    3. Simplified5.4

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

    if -3.124283374205192e+57 < b_2 < -1.273959369302109e-247

    1. Initial program 8.1

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity8.1

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

    if -1.273959369302109e-247 < b_2 < 4.144553567986907e+60

    1. Initial program 28.1

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

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

      \[\leadsto \frac{\frac{\color{blue}{0 + a \cdot c}}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    5. Using strategy rm
    6. Applied div-inv16.6

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

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

      \[\leadsto \frac{\color{blue}{\frac{a \cdot c}{a}}}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\]
    10. Taylor expanded around 0 9.7

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

    if 4.144553567986907e+60 < b_2

    1. Initial program 58.0

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

      \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{c}{b_2}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification6.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.12428337420519208 \cdot 10^{57}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{b_2 \cdot -2}{a}\right)\\ \mathbf{elif}\;b_2 \le -1.273959369302109 \cdot 10^{-247}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} + \left(-b_2\right)}{a}\\ \mathbf{elif}\;b_2 \le 4.1445535679869069 \cdot 10^{60}:\\ \;\;\;\;\frac{c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \end{array}\]

Reproduce

herbie shell --seed 2020045 +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))