Average Error: 34.1 → 6.3
Time: 21.2s
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.11981154530853106611761327467786604265 \cdot 10^{143}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, -2 \cdot \frac{b_2}{a}\right)\\ \mathbf{elif}\;b_2 \le -1.135092661548540906082395119697050086043 \cdot 10^{-302}:\\ \;\;\;\;\frac{\left(-b_2\right) + \sqrt{\mathsf{fma}\left(a, -c, {b_2}^{2}\right)}}{a}\\ \mathbf{elif}\;b_2 \le 5.419849075113512436722551820666931760413 \cdot 10^{134}:\\ \;\;\;\;\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.11981154530853106611761327467786604265 \cdot 10^{143}:\\
\;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, -2 \cdot \frac{b_2}{a}\right)\\

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

\mathbf{elif}\;b_2 \le 5.419849075113512436722551820666931760413 \cdot 10^{134}:\\
\;\;\;\;\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 r24771 = b_2;
        double r24772 = -r24771;
        double r24773 = r24771 * r24771;
        double r24774 = a;
        double r24775 = c;
        double r24776 = r24774 * r24775;
        double r24777 = r24773 - r24776;
        double r24778 = sqrt(r24777);
        double r24779 = r24772 + r24778;
        double r24780 = r24779 / r24774;
        return r24780;
}

double f(double a, double b_2, double c) {
        double r24781 = b_2;
        double r24782 = -1.119811545308531e+143;
        bool r24783 = r24781 <= r24782;
        double r24784 = c;
        double r24785 = r24784 / r24781;
        double r24786 = 0.5;
        double r24787 = -2.0;
        double r24788 = a;
        double r24789 = r24781 / r24788;
        double r24790 = r24787 * r24789;
        double r24791 = fma(r24785, r24786, r24790);
        double r24792 = -1.1350926615485409e-302;
        bool r24793 = r24781 <= r24792;
        double r24794 = -r24781;
        double r24795 = -r24784;
        double r24796 = 2.0;
        double r24797 = pow(r24781, r24796);
        double r24798 = fma(r24788, r24795, r24797);
        double r24799 = sqrt(r24798);
        double r24800 = r24794 + r24799;
        double r24801 = r24800 / r24788;
        double r24802 = 5.4198490751135124e+134;
        bool r24803 = r24781 <= r24802;
        double r24804 = r24781 * r24781;
        double r24805 = r24788 * r24784;
        double r24806 = r24804 - r24805;
        double r24807 = sqrt(r24806);
        double r24808 = r24794 - r24807;
        double r24809 = r24784 / r24808;
        double r24810 = -0.5;
        double r24811 = r24810 * r24785;
        double r24812 = r24803 ? r24809 : r24811;
        double r24813 = r24793 ? r24801 : r24812;
        double r24814 = r24783 ? r24791 : r24813;
        return r24814;
}

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.119811545308531e+143

    1. Initial program 59.0

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

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

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

    if -1.119811545308531e+143 < b_2 < -1.1350926615485409e-302

    1. Initial program 8.0

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

      \[\leadsto \frac{\left(-b_2\right) + \sqrt{\color{blue}{{b_2}^{2} - a \cdot c}}}{a}\]
    3. Simplified8.0

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

    if -1.1350926615485409e-302 < b_2 < 5.4198490751135124e+134

    1. Initial program 34.0

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

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

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

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

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

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

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

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

    if 5.4198490751135124e+134 < b_2

    1. Initial program 62.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.11981154530853106611761327467786604265 \cdot 10^{143}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{b_2}, \frac{1}{2}, -2 \cdot \frac{b_2}{a}\right)\\ \mathbf{elif}\;b_2 \le -1.135092661548540906082395119697050086043 \cdot 10^{-302}:\\ \;\;\;\;\frac{\left(-b_2\right) + \sqrt{\mathsf{fma}\left(a, -c, {b_2}^{2}\right)}}{a}\\ \mathbf{elif}\;b_2 \le 5.419849075113512436722551820666931760413 \cdot 10^{134}:\\ \;\;\;\;\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 2019326 +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))