Average Error: 33.4 → 8.8
Time: 57.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 -5.4077460761521334 \cdot 10^{+100}:\\ \;\;\;\;\frac{(\frac{1}{2} \cdot \left(\frac{a}{\frac{b_2}{c}}\right) + \left(b_2 \cdot -2\right))_*}{a}\\ \mathbf{elif}\;b_2 \le -6.235100481662323 \cdot 10^{-305}:\\ \;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\ \mathbf{elif}\;b_2 \le 3.8630133818209355 \cdot 10^{-07}:\\ \;\;\;\;\frac{-\frac{a \cdot c}{a}}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{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 -5.4077460761521334 \cdot 10^{+100}:\\
\;\;\;\;\frac{(\frac{1}{2} \cdot \left(\frac{a}{\frac{b_2}{c}}\right) + \left(b_2 \cdot -2\right))_*}{a}\\

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

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r1910774 = b_2;
        double r1910775 = -r1910774;
        double r1910776 = r1910774 * r1910774;
        double r1910777 = a;
        double r1910778 = c;
        double r1910779 = r1910777 * r1910778;
        double r1910780 = r1910776 - r1910779;
        double r1910781 = sqrt(r1910780);
        double r1910782 = r1910775 + r1910781;
        double r1910783 = r1910782 / r1910777;
        return r1910783;
}

double f(double a, double b_2, double c) {
        double r1910784 = b_2;
        double r1910785 = -5.4077460761521334e+100;
        bool r1910786 = r1910784 <= r1910785;
        double r1910787 = 0.5;
        double r1910788 = a;
        double r1910789 = c;
        double r1910790 = r1910784 / r1910789;
        double r1910791 = r1910788 / r1910790;
        double r1910792 = -2.0;
        double r1910793 = r1910784 * r1910792;
        double r1910794 = fma(r1910787, r1910791, r1910793);
        double r1910795 = r1910794 / r1910788;
        double r1910796 = -6.235100481662323e-305;
        bool r1910797 = r1910784 <= r1910796;
        double r1910798 = 1.0;
        double r1910799 = r1910784 * r1910784;
        double r1910800 = r1910788 * r1910789;
        double r1910801 = r1910799 - r1910800;
        double r1910802 = sqrt(r1910801);
        double r1910803 = r1910802 - r1910784;
        double r1910804 = r1910788 / r1910803;
        double r1910805 = r1910798 / r1910804;
        double r1910806 = 3.8630133818209355e-07;
        bool r1910807 = r1910784 <= r1910806;
        double r1910808 = r1910800 / r1910788;
        double r1910809 = -r1910808;
        double r1910810 = r1910802 + r1910784;
        double r1910811 = r1910809 / r1910810;
        double r1910812 = r1910789 / r1910784;
        double r1910813 = -0.5;
        double r1910814 = r1910812 * r1910813;
        double r1910815 = r1910807 ? r1910811 : r1910814;
        double r1910816 = r1910797 ? r1910805 : r1910815;
        double r1910817 = r1910786 ? r1910795 : r1910816;
        return r1910817;
}

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 < -5.4077460761521334e+100

    1. Initial program 44.3

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

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

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

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

    if -5.4077460761521334e+100 < b_2 < -6.235100481662323e-305

    1. Initial program 8.8

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified8.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.9

      \[\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 un-div-inv8.8

      \[\leadsto \color{blue}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity8.8

      \[\leadsto \frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - \color{blue}{1 \cdot b_2}}{a}\]
    9. Applied *-un-lft-identity8.8

      \[\leadsto \frac{\color{blue}{1 \cdot \sqrt{b_2 \cdot b_2 - a \cdot c}} - 1 \cdot b_2}{a}\]
    10. Applied distribute-lft-out--8.8

      \[\leadsto \frac{\color{blue}{1 \cdot \left(\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2\right)}}{a}\]
    11. Applied associate-/l*8.9

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

    if -6.235100481662323e-305 < b_2 < 3.8630133818209355e-07

    1. Initial program 25.6

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

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

      \[\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 flip--25.8

      \[\leadsto \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}} \cdot \frac{1}{a}\]
    7. Applied associate-*l/25.8

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

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

    if 3.8630133818209355e-07 < b_2

    1. Initial program 54.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -5.4077460761521334 \cdot 10^{+100}:\\ \;\;\;\;\frac{(\frac{1}{2} \cdot \left(\frac{a}{\frac{b_2}{c}}\right) + \left(b_2 \cdot -2\right))_*}{a}\\ \mathbf{elif}\;b_2 \le -6.235100481662323 \cdot 10^{-305}:\\ \;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\ \mathbf{elif}\;b_2 \le 3.8630133818209355 \cdot 10^{-07}:\\ \;\;\;\;\frac{-\frac{a \cdot c}{a}}{\sqrt{b_2 \cdot b_2 - a \cdot c} + b_2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \end{array}\]

Reproduce

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