Average Error: 34.4 → 8.9
Time: 18.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 -1.532647813487864998120433824563689483214 \cdot 10^{52}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \mathbf{elif}\;b_2 \le -1.571246895950165959018503319317416108871 \cdot 10^{-147}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\sqrt{\mathsf{fma}\left(a, -c, {b_2}^{2}\right)} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 3.569161879972515120190840820324612209908 \cdot 10^{135}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b_2}{a} - \left(\frac{b_2}{a} - \frac{\frac{1}{2}}{\frac{b_2}{c}}\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 -1.532647813487864998120433824563689483214 \cdot 10^{52}:\\
\;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\

\mathbf{elif}\;b_2 \le -1.571246895950165959018503319317416108871 \cdot 10^{-147}:\\
\;\;\;\;\frac{\frac{a \cdot c}{\sqrt{\mathsf{fma}\left(a, -c, {b_2}^{2}\right)} - b_2}}{a}\\

\mathbf{elif}\;b_2 \le 3.569161879972515120190840820324612209908 \cdot 10^{135}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)}}{a}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r75380 = b_2;
        double r75381 = -r75380;
        double r75382 = r75380 * r75380;
        double r75383 = a;
        double r75384 = c;
        double r75385 = r75383 * r75384;
        double r75386 = r75382 - r75385;
        double r75387 = sqrt(r75386);
        double r75388 = r75381 - r75387;
        double r75389 = r75388 / r75383;
        return r75389;
}

double f(double a, double b_2, double c) {
        double r75390 = b_2;
        double r75391 = -1.532647813487865e+52;
        bool r75392 = r75390 <= r75391;
        double r75393 = c;
        double r75394 = r75393 / r75390;
        double r75395 = -0.5;
        double r75396 = r75394 * r75395;
        double r75397 = -1.571246895950166e-147;
        bool r75398 = r75390 <= r75397;
        double r75399 = a;
        double r75400 = r75399 * r75393;
        double r75401 = -r75393;
        double r75402 = 2.0;
        double r75403 = pow(r75390, r75402);
        double r75404 = fma(r75399, r75401, r75403);
        double r75405 = sqrt(r75404);
        double r75406 = r75405 - r75390;
        double r75407 = r75400 / r75406;
        double r75408 = r75407 / r75399;
        double r75409 = 3.569161879972515e+135;
        bool r75410 = r75390 <= r75409;
        double r75411 = -r75390;
        double r75412 = -r75400;
        double r75413 = fma(r75390, r75390, r75412);
        double r75414 = sqrt(r75413);
        double r75415 = r75411 - r75414;
        double r75416 = r75415 / r75399;
        double r75417 = r75411 / r75399;
        double r75418 = r75390 / r75399;
        double r75419 = 0.5;
        double r75420 = r75390 / r75393;
        double r75421 = r75419 / r75420;
        double r75422 = r75418 - r75421;
        double r75423 = r75417 - r75422;
        double r75424 = r75410 ? r75416 : r75423;
        double r75425 = r75398 ? r75408 : r75424;
        double r75426 = r75392 ? r75396 : r75425;
        return r75426;
}

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 < -1.532647813487865e+52

    1. Initial program 57.3

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

      \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{c}{b_2}}\]
    3. Simplified3.6

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

    if -1.532647813487865e+52 < b_2 < -1.571246895950166e-147

    1. Initial program 37.3

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

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    4. Simplified37.4

      \[\leadsto \color{blue}{\left(-\frac{b_2}{a}\right)} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    5. Using strategy rm
    6. Applied distribute-neg-frac37.4

      \[\leadsto \color{blue}{\frac{-b_2}{a}} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    7. Applied sub-div37.3

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

      \[\leadsto \frac{\color{blue}{\left(-b_2\right) - \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)}}}{a}\]
    9. Using strategy rm
    10. Applied flip--37.3

      \[\leadsto \frac{\color{blue}{\frac{\left(-b_2\right) \cdot \left(-b_2\right) - \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)} \cdot \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)}}{\left(-b_2\right) + \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)}}}}{a}\]
    11. Simplified16.9

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

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

    if -1.571246895950166e-147 < b_2 < 3.569161879972515e+135

    1. Initial program 11.4

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

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

      \[\leadsto \color{blue}{\left(-\frac{b_2}{a}\right)} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    5. Using strategy rm
    6. Applied distribute-neg-frac11.4

      \[\leadsto \color{blue}{\frac{-b_2}{a}} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    7. Applied sub-div11.4

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

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

    if 3.569161879972515e+135 < b_2

    1. Initial program 56.9

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

      \[\leadsto \color{blue}{\frac{-b_2}{a} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}\]
    4. Simplified56.9

      \[\leadsto \color{blue}{\left(-\frac{b_2}{a}\right)} - \frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    5. Taylor expanded around inf 2.5

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

      \[\leadsto \left(-\frac{b_2}{a}\right) - \color{blue}{\left(\frac{b_2}{a} - \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification8.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.532647813487864998120433824563689483214 \cdot 10^{52}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \mathbf{elif}\;b_2 \le -1.571246895950165959018503319317416108871 \cdot 10^{-147}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\sqrt{\mathsf{fma}\left(a, -c, {b_2}^{2}\right)} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 3.569161879972515120190840820324612209908 \cdot 10^{135}:\\ \;\;\;\;\frac{\left(-b_2\right) - \sqrt{\mathsf{fma}\left(b_2, b_2, -a \cdot c\right)}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b_2}{a} - \left(\frac{b_2}{a} - \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\ \end{array}\]

Reproduce

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