Average Error: 33.6 → 9.7
Time: 21.8s
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.71587657897976255 \cdot 10^{-82}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, \frac{b_2}{a} \cdot -2\right)\\ \mathbf{elif}\;b_2 \le 8.5929479137772817 \cdot 10^{101}:\\ \;\;\;\;\frac{c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \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 -1.71587657897976255 \cdot 10^{-82}:\\
\;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, \frac{b_2}{a} \cdot -2\right)\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r38670 = b_2;
        double r38671 = -r38670;
        double r38672 = r38670 * r38670;
        double r38673 = a;
        double r38674 = c;
        double r38675 = r38673 * r38674;
        double r38676 = r38672 - r38675;
        double r38677 = sqrt(r38676);
        double r38678 = r38671 + r38677;
        double r38679 = r38678 / r38673;
        return r38679;
}

double f(double a, double b_2, double c) {
        double r38680 = b_2;
        double r38681 = -1.7158765789797625e-82;
        bool r38682 = r38680 <= r38681;
        double r38683 = c;
        double r38684 = r38683 / r38680;
        double r38685 = 0.5;
        double r38686 = a;
        double r38687 = r38680 / r38686;
        double r38688 = -2.0;
        double r38689 = r38687 * r38688;
        double r38690 = fma(r38684, r38685, r38689);
        double r38691 = 8.592947913777282e+101;
        bool r38692 = r38680 <= r38691;
        double r38693 = -r38680;
        double r38694 = r38680 * r38680;
        double r38695 = r38686 * r38683;
        double r38696 = r38694 - r38695;
        double r38697 = sqrt(r38696);
        double r38698 = r38693 - r38697;
        double r38699 = r38683 / r38698;
        double r38700 = -0.5;
        double r38701 = r38700 * r38684;
        double r38702 = r38692 ? r38699 : r38701;
        double r38703 = r38682 ? r38690 : r38702;
        return r38703;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 3 regimes
  2. if b_2 < -1.7158765789797625e-82

    1. Initial program 25.8

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

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

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

    if -1.7158765789797625e-82 < b_2 < 8.592947913777282e+101

    1. Initial program 25.2

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

      \[\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. Simplified16.7

      \[\leadsto \frac{\frac{\color{blue}{0 + c \cdot a}}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity16.7

      \[\leadsto \frac{\frac{0 + c \cdot a}{\color{blue}{1 \cdot \left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right)}}}{a}\]
    7. Applied *-un-lft-identity16.7

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

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

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

      \[\leadsto \frac{\frac{1}{1}}{\color{blue}{\frac{a}{\frac{a \cdot c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}}}\]
    11. Using strategy rm
    12. Applied *-un-lft-identity16.9

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

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

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

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

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

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

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

    if 8.592947913777282e+101 < b_2

    1. Initial program 60.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.71587657897976255 \cdot 10^{-82}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, \frac{b_2}{a} \cdot -2\right)\\ \mathbf{elif}\;b_2 \le 8.5929479137772817 \cdot 10^{101}:\\ \;\;\;\;\frac{c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \end{array}\]

Reproduce

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