Average Error: 34.6 → 9.3
Time: 8.7s
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 -6.371698442415157100029538982618411822116 \cdot 10^{150}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le -5.331911540015065182156270674462636313069 \cdot 10^{-301}:\\ \;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\ \mathbf{elif}\;b_2 \le 1.493919351930657503244813394241198531074 \cdot 10^{-69}:\\ \;\;\;\;\frac{\frac{1}{\frac{\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}{c}}}{a}\\ \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 -6.371698442415157100029538982618411822116 \cdot 10^{150}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\

\mathbf{elif}\;b_2 \le -5.331911540015065182156270674462636313069 \cdot 10^{-301}:\\
\;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r32596 = b_2;
        double r32597 = -r32596;
        double r32598 = r32596 * r32596;
        double r32599 = a;
        double r32600 = c;
        double r32601 = r32599 * r32600;
        double r32602 = r32598 - r32601;
        double r32603 = sqrt(r32602);
        double r32604 = r32597 + r32603;
        double r32605 = r32604 / r32599;
        return r32605;
}

double f(double a, double b_2, double c) {
        double r32606 = b_2;
        double r32607 = -6.371698442415157e+150;
        bool r32608 = r32606 <= r32607;
        double r32609 = 0.5;
        double r32610 = c;
        double r32611 = r32610 / r32606;
        double r32612 = r32609 * r32611;
        double r32613 = 2.0;
        double r32614 = a;
        double r32615 = r32606 / r32614;
        double r32616 = r32613 * r32615;
        double r32617 = r32612 - r32616;
        double r32618 = -5.331911540015065e-301;
        bool r32619 = r32606 <= r32618;
        double r32620 = 1.0;
        double r32621 = r32606 * r32606;
        double r32622 = r32614 * r32610;
        double r32623 = r32621 - r32622;
        double r32624 = sqrt(r32623);
        double r32625 = r32624 - r32606;
        double r32626 = r32614 / r32625;
        double r32627 = r32620 / r32626;
        double r32628 = 1.4939193519306575e-69;
        bool r32629 = r32606 <= r32628;
        double r32630 = -r32606;
        double r32631 = r32630 - r32624;
        double r32632 = r32631 / r32614;
        double r32633 = r32632 / r32610;
        double r32634 = r32620 / r32633;
        double r32635 = r32634 / r32614;
        double r32636 = -0.5;
        double r32637 = r32636 * r32611;
        double r32638 = r32629 ? r32635 : r32637;
        double r32639 = r32619 ? r32627 : r32638;
        double r32640 = r32608 ? r32617 : r32639;
        return r32640;
}

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 < -6.371698442415157e+150

    1. Initial program 63.0

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

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

    if -6.371698442415157e+150 < b_2 < -5.331911540015065e-301

    1. Initial program 9.0

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

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

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

    if -5.331911540015065e-301 < b_2 < 1.4939193519306575e-69

    1. Initial program 21.6

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

      \[\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. Simplified18.1

      \[\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 clear-num18.2

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

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

    if 1.4939193519306575e-69 < b_2

    1. Initial program 53.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -6.371698442415157100029538982618411822116 \cdot 10^{150}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le -5.331911540015065182156270674462636313069 \cdot 10^{-301}:\\ \;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\ \mathbf{elif}\;b_2 \le 1.493919351930657503244813394241198531074 \cdot 10^{-69}:\\ \;\;\;\;\frac{\frac{1}{\frac{\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}}{c}}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \end{array}\]

Reproduce

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