Average Error: 33.3 → 6.4
Time: 1.5m
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.263941314600607 \cdot 10^{+152}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{2}, \left(\frac{a}{\frac{b_2}{c}}\right), \left(b_2 \cdot -2\right)\right)}{a}\\ \mathbf{elif}\;b_2 \le -4.687918346756617 \cdot 10^{-254}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}\\ \mathbf{elif}\;b_2 \le 1.817261397602966 \cdot 10^{+121}:\\ \;\;\;\;\frac{-c}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-c}{\mathsf{fma}\left(\left(c \cdot \frac{a}{b_2}\right), \frac{-1}{2}, \left(b_2 \cdot 2\right)\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.263941314600607 \cdot 10^{+152}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{2}, \left(\frac{a}{\frac{b_2}{c}}\right), \left(b_2 \cdot -2\right)\right)}{a}\\

\mathbf{elif}\;b_2 \le -4.687918346756617 \cdot 10^{-254}:\\
\;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}\\

\mathbf{elif}\;b_2 \le 1.817261397602966 \cdot 10^{+121}:\\
\;\;\;\;\frac{-c}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r4890392 = b_2;
        double r4890393 = -r4890392;
        double r4890394 = r4890392 * r4890392;
        double r4890395 = a;
        double r4890396 = c;
        double r4890397 = r4890395 * r4890396;
        double r4890398 = r4890394 - r4890397;
        double r4890399 = sqrt(r4890398);
        double r4890400 = r4890393 + r4890399;
        double r4890401 = r4890400 / r4890395;
        return r4890401;
}

double f(double a, double b_2, double c) {
        double r4890402 = b_2;
        double r4890403 = -3.263941314600607e+152;
        bool r4890404 = r4890402 <= r4890403;
        double r4890405 = 0.5;
        double r4890406 = a;
        double r4890407 = c;
        double r4890408 = r4890402 / r4890407;
        double r4890409 = r4890406 / r4890408;
        double r4890410 = -2.0;
        double r4890411 = r4890402 * r4890410;
        double r4890412 = fma(r4890405, r4890409, r4890411);
        double r4890413 = r4890412 / r4890406;
        double r4890414 = -4.687918346756617e-254;
        bool r4890415 = r4890402 <= r4890414;
        double r4890416 = r4890402 * r4890402;
        double r4890417 = r4890406 * r4890407;
        double r4890418 = r4890416 - r4890417;
        double r4890419 = sqrt(r4890418);
        double r4890420 = r4890419 - r4890402;
        double r4890421 = r4890420 / r4890406;
        double r4890422 = 1.817261397602966e+121;
        bool r4890423 = r4890402 <= r4890422;
        double r4890424 = -r4890407;
        double r4890425 = r4890419 + r4890402;
        double r4890426 = r4890424 / r4890425;
        double r4890427 = r4890406 / r4890402;
        double r4890428 = r4890407 * r4890427;
        double r4890429 = -0.5;
        double r4890430 = 2.0;
        double r4890431 = r4890402 * r4890430;
        double r4890432 = fma(r4890428, r4890429, r4890431);
        double r4890433 = r4890424 / r4890432;
        double r4890434 = r4890423 ? r4890426 : r4890433;
        double r4890435 = r4890415 ? r4890421 : r4890434;
        double r4890436 = r4890404 ? r4890413 : r4890435;
        return r4890436;
}

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

    1. Initial program 60.1

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified60.1

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

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

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

    if -3.263941314600607e+152 < b_2 < -4.687918346756617e-254

    1. Initial program 7.8

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified7.8

      \[\leadsto \color{blue}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}\]
    3. Using strategy rm
    4. Applied div-inv8.0

      \[\leadsto \color{blue}{\left(\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2\right) \cdot \frac{1}{a}}\]
    5. Using strategy rm
    6. Applied associate-*r/7.8

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

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

    if -4.687918346756617e-254 < b_2 < 1.817261397602966e+121

    1. Initial program 31.6

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified31.6

      \[\leadsto \color{blue}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}\]
    3. Using strategy rm
    4. Applied flip--31.8

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

      \[\leadsto \frac{\frac{\color{blue}{-a \cdot c}}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}}{a}\]
    6. Using strategy rm
    7. Applied distribute-frac-neg15.5

      \[\leadsto \frac{\color{blue}{-\frac{a \cdot c}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}}}{a}\]
    8. Applied distribute-frac-neg15.5

      \[\leadsto \color{blue}{-\frac{\frac{a \cdot c}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}}{a}}\]
    9. Simplified8.7

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

    if 1.817261397602966e+121 < b_2

    1. Initial program 59.8

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified59.8

      \[\leadsto \color{blue}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}\]
    3. Using strategy rm
    4. Applied flip--59.9

      \[\leadsto \frac{\color{blue}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} \cdot \sqrt{b_2 \cdot b_2 - a \cdot c} - b_2 \cdot b_2}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}}}{a}\]
    5. Simplified34.1

      \[\leadsto \frac{\frac{\color{blue}{-a \cdot c}}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}}{a}\]
    6. Using strategy rm
    7. Applied distribute-frac-neg34.1

      \[\leadsto \frac{\color{blue}{-\frac{a \cdot c}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}}}{a}\]
    8. Applied distribute-frac-neg34.1

      \[\leadsto \color{blue}{-\frac{\frac{a \cdot c}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}}{a}}\]
    9. Simplified32.8

      \[\leadsto -\color{blue}{\frac{c}{b_2 + \sqrt{b_2 \cdot b_2 - a \cdot c}}}\]
    10. Taylor expanded around inf 7.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.263941314600607 \cdot 10^{+152}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{2}, \left(\frac{a}{\frac{b_2}{c}}\right), \left(b_2 \cdot -2\right)\right)}{a}\\ \mathbf{elif}\;b_2 \le -4.687918346756617 \cdot 10^{-254}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}\\ \mathbf{elif}\;b_2 \le 1.817261397602966 \cdot 10^{+121}:\\ \;\;\;\;\frac{-c}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-c}{\mathsf{fma}\left(\left(c \cdot \frac{a}{b_2}\right), \frac{-1}{2}, \left(b_2 \cdot 2\right)\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019128 +o rules:numerics
(FPCore (a b_2 c)
  :name "quad2p (problem 3.2.1, positive)"
  (/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))