Average Error: 29.4 → 22.3
Time: 12.5s
Precision: 64
\[{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}\]
\[\begin{array}{l} \mathbf{if}\;\frac{1}{n} \le -2.62963224260069623 \cdot 10^{-7}:\\ \;\;\;\;\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} - \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right)\\ \mathbf{elif}\;\frac{1}{n} \le 8.0651678035819246 \cdot 10^{-8}:\\ \;\;\;\;\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \mathsf{fma}\left(-0.25, \frac{1}{{x}^{2} \cdot n} + \frac{\log \left(\frac{1}{x}\right)}{x \cdot {n}^{2}}, \frac{\frac{0.5}{n}}{x}\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}\right)\\ \end{array}\]
{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}
\begin{array}{l}
\mathbf{if}\;\frac{1}{n} \le -2.62963224260069623 \cdot 10^{-7}:\\
\;\;\;\;\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} - \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right)\\

\mathbf{elif}\;\frac{1}{n} \le 8.0651678035819246 \cdot 10^{-8}:\\
\;\;\;\;\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \mathsf{fma}\left(-0.25, \frac{1}{{x}^{2} \cdot n} + \frac{\log \left(\frac{1}{x}\right)}{x \cdot {n}^{2}}, \frac{\frac{0.5}{n}}{x}\right)\\

\mathbf{else}:\\
\;\;\;\;\log \left(e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}\right)\\

\end{array}
double f(double x, double n) {
        double r93754 = x;
        double r93755 = 1.0;
        double r93756 = r93754 + r93755;
        double r93757 = n;
        double r93758 = r93755 / r93757;
        double r93759 = pow(r93756, r93758);
        double r93760 = pow(r93754, r93758);
        double r93761 = r93759 - r93760;
        return r93761;
}

double f(double x, double n) {
        double r93762 = 1.0;
        double r93763 = n;
        double r93764 = r93762 / r93763;
        double r93765 = -2.629632242600696e-07;
        bool r93766 = r93764 <= r93765;
        double r93767 = x;
        double r93768 = r93767 + r93762;
        double r93769 = 2.0;
        double r93770 = r93764 / r93769;
        double r93771 = pow(r93768, r93770);
        double r93772 = pow(r93767, r93764);
        double r93773 = sqrt(r93772);
        double r93774 = r93771 + r93773;
        double r93775 = r93771 - r93773;
        double r93776 = r93774 * r93775;
        double r93777 = 8.065167803581925e-08;
        bool r93778 = r93764 <= r93777;
        double r93779 = 0.25;
        double r93780 = -r93779;
        double r93781 = 1.0;
        double r93782 = pow(r93767, r93769);
        double r93783 = r93782 * r93763;
        double r93784 = r93781 / r93783;
        double r93785 = r93781 / r93767;
        double r93786 = log(r93785);
        double r93787 = pow(r93763, r93769);
        double r93788 = r93767 * r93787;
        double r93789 = r93786 / r93788;
        double r93790 = r93784 + r93789;
        double r93791 = 0.5;
        double r93792 = r93791 / r93763;
        double r93793 = r93792 / r93767;
        double r93794 = fma(r93780, r93790, r93793);
        double r93795 = r93774 * r93794;
        double r93796 = pow(r93768, r93764);
        double r93797 = r93796 - r93772;
        double r93798 = exp(r93797);
        double r93799 = log(r93798);
        double r93800 = r93778 ? r93795 : r93799;
        double r93801 = r93766 ? r93776 : r93800;
        return r93801;
}

Error

Bits error versus x

Bits error versus n

Derivation

  1. Split input into 3 regimes
  2. if (/ 1.0 n) < -2.629632242600696e-07

    1. Initial program 0.8

      \[{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt0.8

      \[\leadsto {\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - \color{blue}{\sqrt{{x}^{\left(\frac{1}{n}\right)}} \cdot \sqrt{{x}^{\left(\frac{1}{n}\right)}}}\]
    4. Applied sqr-pow0.8

      \[\leadsto \color{blue}{{\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} \cdot {\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)}} - \sqrt{{x}^{\left(\frac{1}{n}\right)}} \cdot \sqrt{{x}^{\left(\frac{1}{n}\right)}}\]
    5. Applied difference-of-squares0.8

      \[\leadsto \color{blue}{\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} - \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right)}\]

    if -2.629632242600696e-07 < (/ 1.0 n) < 8.065167803581925e-08

    1. Initial program 44.4

      \[{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt44.4

      \[\leadsto {\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - \color{blue}{\sqrt{{x}^{\left(\frac{1}{n}\right)}} \cdot \sqrt{{x}^{\left(\frac{1}{n}\right)}}}\]
    4. Applied sqr-pow44.4

      \[\leadsto \color{blue}{{\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} \cdot {\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)}} - \sqrt{{x}^{\left(\frac{1}{n}\right)}} \cdot \sqrt{{x}^{\left(\frac{1}{n}\right)}}\]
    5. Applied difference-of-squares44.4

      \[\leadsto \color{blue}{\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} - \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right)}\]
    6. Taylor expanded around inf 32.5

      \[\leadsto \left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \color{blue}{\left(0.5 \cdot \frac{1}{x \cdot n} - \left(0.25 \cdot \frac{1}{{x}^{2} \cdot n} + 0.25 \cdot \frac{\log \left(\frac{1}{x}\right)}{x \cdot {n}^{2}}\right)\right)}\]
    7. Simplified32.0

      \[\leadsto \left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \color{blue}{\mathsf{fma}\left(-0.25, \frac{1}{{x}^{2} \cdot n} + \frac{\log \left(\frac{1}{x}\right)}{x \cdot {n}^{2}}, \frac{\frac{0.5}{n}}{x}\right)}\]

    if 8.065167803581925e-08 < (/ 1.0 n)

    1. Initial program 25.2

      \[{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}\]
    2. Using strategy rm
    3. Applied add-log-exp25.2

      \[\leadsto {\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - \color{blue}{\log \left(e^{{x}^{\left(\frac{1}{n}\right)}}\right)}\]
    4. Applied add-log-exp25.2

      \[\leadsto \color{blue}{\log \left(e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)}}\right)} - \log \left(e^{{x}^{\left(\frac{1}{n}\right)}}\right)\]
    5. Applied diff-log25.2

      \[\leadsto \color{blue}{\log \left(\frac{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)}}}{e^{{x}^{\left(\frac{1}{n}\right)}}}\right)}\]
    6. Simplified25.2

      \[\leadsto \log \color{blue}{\left(e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification22.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{1}{n} \le -2.62963224260069623 \cdot 10^{-7}:\\ \;\;\;\;\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} - \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right)\\ \mathbf{elif}\;\frac{1}{n} \le 8.0651678035819246 \cdot 10^{-8}:\\ \;\;\;\;\left({\left(x + 1\right)}^{\left(\frac{\frac{1}{n}}{2}\right)} + \sqrt{{x}^{\left(\frac{1}{n}\right)}}\right) \cdot \mathsf{fma}\left(-0.25, \frac{1}{{x}^{2} \cdot n} + \frac{\log \left(\frac{1}{x}\right)}{x \cdot {n}^{2}}, \frac{\frac{0.5}{n}}{x}\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020020 +o rules:numerics
(FPCore (x n)
  :name "2nthrt (problem 3.4.6)"
  :precision binary64
  (- (pow (+ x 1) (/ 1 n)) (pow x (/ 1 n))))