Average Error: 34.1 → 6.6
Time: 21.1s
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.513258824878011748257049801344805265531 \cdot 10^{152}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 8.216265756828381163830890149037103205802 \cdot 10^{-276}:\\ \;\;\;\;\frac{c}{\sqrt{{b_2}^{2} - a \cdot c} - b_2}\\ \mathbf{elif}\;b_2 \le 5.031608061939102936286074782173578716838 \cdot 10^{53}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{b_2}{a} \cdot -2\right)\\ \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.513258824878011748257049801344805265531 \cdot 10^{152}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le 8.216265756828381163830890149037103205802 \cdot 10^{-276}:\\
\;\;\;\;\frac{c}{\sqrt{{b_2}^{2} - a \cdot c} - b_2}\\

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

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{b_2}{a} \cdot -2\right)\\

\end{array}
double f(double a, double b_2, double c) {
        double r77450 = b_2;
        double r77451 = -r77450;
        double r77452 = r77450 * r77450;
        double r77453 = a;
        double r77454 = c;
        double r77455 = r77453 * r77454;
        double r77456 = r77452 - r77455;
        double r77457 = sqrt(r77456);
        double r77458 = r77451 - r77457;
        double r77459 = r77458 / r77453;
        return r77459;
}

double f(double a, double b_2, double c) {
        double r77460 = b_2;
        double r77461 = -3.5132588248780117e+152;
        bool r77462 = r77460 <= r77461;
        double r77463 = -0.5;
        double r77464 = c;
        double r77465 = r77464 / r77460;
        double r77466 = r77463 * r77465;
        double r77467 = 8.216265756828381e-276;
        bool r77468 = r77460 <= r77467;
        double r77469 = 2.0;
        double r77470 = pow(r77460, r77469);
        double r77471 = a;
        double r77472 = r77471 * r77464;
        double r77473 = r77470 - r77472;
        double r77474 = sqrt(r77473);
        double r77475 = r77474 - r77460;
        double r77476 = r77464 / r77475;
        double r77477 = 5.031608061939103e+53;
        bool r77478 = r77460 <= r77477;
        double r77479 = 1.0;
        double r77480 = -r77460;
        double r77481 = r77460 * r77460;
        double r77482 = r77481 - r77472;
        double r77483 = sqrt(r77482);
        double r77484 = r77480 - r77483;
        double r77485 = r77471 / r77484;
        double r77486 = r77479 / r77485;
        double r77487 = 0.5;
        double r77488 = r77460 / r77471;
        double r77489 = -2.0;
        double r77490 = r77488 * r77489;
        double r77491 = fma(r77487, r77465, r77490);
        double r77492 = r77478 ? r77486 : r77491;
        double r77493 = r77468 ? r77476 : r77492;
        double r77494 = r77462 ? r77466 : r77493;
        return r77494;
}

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.5132588248780117e+152

    1. Initial program 63.9

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

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

    if -3.5132588248780117e+152 < b_2 < 8.216265756828381e-276

    1. Initial program 33.1

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied flip--33.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. Simplified15.2

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

      \[\leadsto \frac{\frac{0 + a \cdot c}{\color{blue}{\sqrt{{b_2}^{2} - a \cdot c} - b_2}}}{a}\]
    6. Using strategy rm
    7. Applied div-inv15.3

      \[\leadsto \color{blue}{\frac{0 + a \cdot c}{\sqrt{{b_2}^{2} - a \cdot c} - b_2} \cdot \frac{1}{a}}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity15.3

      \[\leadsto \frac{0 + a \cdot c}{\color{blue}{1 \cdot \left(\sqrt{{b_2}^{2} - a \cdot c} - b_2\right)}} \cdot \frac{1}{a}\]
    10. Applied *-un-lft-identity15.3

      \[\leadsto \frac{\color{blue}{1 \cdot \left(0 + a \cdot c\right)}}{1 \cdot \left(\sqrt{{b_2}^{2} - a \cdot c} - b_2\right)} \cdot \frac{1}{a}\]
    11. Applied times-frac15.3

      \[\leadsto \color{blue}{\left(\frac{1}{1} \cdot \frac{0 + a \cdot c}{\sqrt{{b_2}^{2} - a \cdot c} - b_2}\right)} \cdot \frac{1}{a}\]
    12. Applied associate-*l*15.3

      \[\leadsto \color{blue}{\frac{1}{1} \cdot \left(\frac{0 + a \cdot c}{\sqrt{{b_2}^{2} - a \cdot c} - b_2} \cdot \frac{1}{a}\right)}\]
    13. Simplified7.8

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

    if 8.216265756828381e-276 < b_2 < 5.031608061939103e+53

    1. Initial program 9.3

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

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

    if 5.031608061939103e+53 < b_2

    1. Initial program 39.6

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

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{b_2}{a} \cdot -2\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification6.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.513258824878011748257049801344805265531 \cdot 10^{152}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 8.216265756828381163830890149037103205802 \cdot 10^{-276}:\\ \;\;\;\;\frac{c}{\sqrt{{b_2}^{2} - a \cdot c} - b_2}\\ \mathbf{elif}\;b_2 \le 5.031608061939102936286074782173578716838 \cdot 10^{53}:\\ \;\;\;\;\frac{1}{\frac{a}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{b_2}{a} \cdot -2\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019326 +o rules:numerics
(FPCore (a b_2 c)
  :name "NMSE problem 3.2.1"
  :precision binary64
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))