Average Error: 42.9 → 29.3
Time: 35.3s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;n \le -1.242571603158447402612826938411730448414 \cdot 10^{142}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{\frac{i}{n} \cdot \left(\mathsf{fma}\left(1, i, \mathsf{fma}\left(\log 1, n, 1\right)\right) + 1\right)} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)\\ \mathbf{elif}\;n \le -1.444040608233363442991503688972443342209:\\ \;\;\;\;100 \cdot \left(\left(0.5 \cdot \left(i \cdot n\right) + \left(1 \cdot n + 1 \cdot \frac{\log 1 \cdot {n}^{2}}{i}\right)\right) - 0.5 \cdot \left(i \cdot \left(\log 1 \cdot n\right)\right)\right)\\ \mathbf{elif}\;n \le 4.687031455960939276601935165861541225984 \cdot 10^{-109}:\\ \;\;\;\;\sqrt{100} \cdot \mathsf{fma}\left(1, \sqrt{100} \cdot \left({n}^{2} \cdot \log 1\right), \mathsf{fma}\left(\frac{1}{2}, \frac{{\left(\log 1\right)}^{2} \cdot \left({n}^{3} \cdot \sqrt{100}\right)}{i}, \frac{\log 1 \cdot \left({n}^{2} \cdot \sqrt{100}\right)}{i}\right)\right)\\ \mathbf{elif}\;n \le 1.3538891898856935363908521183491446525 \cdot 10^{154}:\\ \;\;\;\;100 \cdot \left(\left(0.5 \cdot \left(i \cdot n\right) + \left(1 \cdot n + 1 \cdot \frac{\log 1 \cdot {n}^{2}}{i}\right)\right) - 0.5 \cdot \left(i \cdot \left(\log 1 \cdot n\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{\frac{\mathsf{fma}\left(i, 2, \mathsf{fma}\left(2, {i}^{2}, 2 \cdot \left(\log 1 \cdot n\right)\right) - 2 \cdot \left({i}^{2} \cdot \log 1\right)\right)}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\ \end{array}\]
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\begin{array}{l}
\mathbf{if}\;n \le -1.242571603158447402612826938411730448414 \cdot 10^{142}:\\
\;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{\frac{i}{n} \cdot \left(\mathsf{fma}\left(1, i, \mathsf{fma}\left(\log 1, n, 1\right)\right) + 1\right)} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)\\

\mathbf{elif}\;n \le -1.444040608233363442991503688972443342209:\\
\;\;\;\;100 \cdot \left(\left(0.5 \cdot \left(i \cdot n\right) + \left(1 \cdot n + 1 \cdot \frac{\log 1 \cdot {n}^{2}}{i}\right)\right) - 0.5 \cdot \left(i \cdot \left(\log 1 \cdot n\right)\right)\right)\\

\mathbf{elif}\;n \le 4.687031455960939276601935165861541225984 \cdot 10^{-109}:\\
\;\;\;\;\sqrt{100} \cdot \mathsf{fma}\left(1, \sqrt{100} \cdot \left({n}^{2} \cdot \log 1\right), \mathsf{fma}\left(\frac{1}{2}, \frac{{\left(\log 1\right)}^{2} \cdot \left({n}^{3} \cdot \sqrt{100}\right)}{i}, \frac{\log 1 \cdot \left({n}^{2} \cdot \sqrt{100}\right)}{i}\right)\right)\\

\mathbf{elif}\;n \le 1.3538891898856935363908521183491446525 \cdot 10^{154}:\\
\;\;\;\;100 \cdot \left(\left(0.5 \cdot \left(i \cdot n\right) + \left(1 \cdot n + 1 \cdot \frac{\log 1 \cdot {n}^{2}}{i}\right)\right) - 0.5 \cdot \left(i \cdot \left(\log 1 \cdot n\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;100 \cdot \frac{\frac{\mathsf{fma}\left(i, 2, \mathsf{fma}\left(2, {i}^{2}, 2 \cdot \left(\log 1 \cdot n\right)\right) - 2 \cdot \left({i}^{2} \cdot \log 1\right)\right)}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\

\end{array}
double f(double i, double n) {
        double r236720 = 100.0;
        double r236721 = 1.0;
        double r236722 = i;
        double r236723 = n;
        double r236724 = r236722 / r236723;
        double r236725 = r236721 + r236724;
        double r236726 = pow(r236725, r236723);
        double r236727 = r236726 - r236721;
        double r236728 = r236727 / r236724;
        double r236729 = r236720 * r236728;
        return r236729;
}

double f(double i, double n) {
        double r236730 = n;
        double r236731 = -1.2425716031584474e+142;
        bool r236732 = r236730 <= r236731;
        double r236733 = 100.0;
        double r236734 = 1.0;
        double r236735 = i;
        double r236736 = r236735 / r236730;
        double r236737 = r236734 + r236736;
        double r236738 = 2.0;
        double r236739 = r236738 * r236730;
        double r236740 = pow(r236737, r236739);
        double r236741 = log(r236734);
        double r236742 = 1.0;
        double r236743 = fma(r236741, r236730, r236742);
        double r236744 = fma(r236734, r236735, r236743);
        double r236745 = r236744 + r236734;
        double r236746 = r236736 * r236745;
        double r236747 = r236740 / r236746;
        double r236748 = r236734 * r236734;
        double r236749 = pow(r236737, r236730);
        double r236750 = r236749 + r236734;
        double r236751 = r236748 / r236750;
        double r236752 = r236751 / r236736;
        double r236753 = r236747 - r236752;
        double r236754 = r236733 * r236753;
        double r236755 = -1.4440406082333634;
        bool r236756 = r236730 <= r236755;
        double r236757 = 0.5;
        double r236758 = r236735 * r236730;
        double r236759 = r236757 * r236758;
        double r236760 = r236734 * r236730;
        double r236761 = pow(r236730, r236738);
        double r236762 = r236741 * r236761;
        double r236763 = r236762 / r236735;
        double r236764 = r236734 * r236763;
        double r236765 = r236760 + r236764;
        double r236766 = r236759 + r236765;
        double r236767 = r236741 * r236730;
        double r236768 = r236735 * r236767;
        double r236769 = r236757 * r236768;
        double r236770 = r236766 - r236769;
        double r236771 = r236733 * r236770;
        double r236772 = 4.687031455960939e-109;
        bool r236773 = r236730 <= r236772;
        double r236774 = sqrt(r236733);
        double r236775 = r236761 * r236741;
        double r236776 = r236774 * r236775;
        double r236777 = 0.5;
        double r236778 = pow(r236741, r236738);
        double r236779 = 3.0;
        double r236780 = pow(r236730, r236779);
        double r236781 = r236780 * r236774;
        double r236782 = r236778 * r236781;
        double r236783 = r236782 / r236735;
        double r236784 = r236761 * r236774;
        double r236785 = r236741 * r236784;
        double r236786 = r236785 / r236735;
        double r236787 = fma(r236777, r236783, r236786);
        double r236788 = fma(r236734, r236776, r236787);
        double r236789 = r236774 * r236788;
        double r236790 = 1.3538891898856935e+154;
        bool r236791 = r236730 <= r236790;
        double r236792 = 2.0;
        double r236793 = pow(r236735, r236738);
        double r236794 = r236738 * r236767;
        double r236795 = fma(r236792, r236793, r236794);
        double r236796 = r236793 * r236741;
        double r236797 = r236792 * r236796;
        double r236798 = r236795 - r236797;
        double r236799 = fma(r236735, r236792, r236798);
        double r236800 = r236799 / r236750;
        double r236801 = r236800 / r236736;
        double r236802 = r236733 * r236801;
        double r236803 = r236791 ? r236771 : r236802;
        double r236804 = r236773 ? r236789 : r236803;
        double r236805 = r236756 ? r236771 : r236804;
        double r236806 = r236732 ? r236754 : r236805;
        return r236806;
}

Error

Bits error versus i

Bits error versus n

Target

Original42.9
Target42.7
Herbie29.3
\[100 \cdot \frac{e^{n \cdot \begin{array}{l} \mathbf{if}\;1 + \frac{i}{n} = 1:\\ \;\;\;\;\frac{i}{n}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{i}{n} \cdot \log \left(1 + \frac{i}{n}\right)}{\left(\frac{i}{n} + 1\right) - 1}\\ \end{array}} - 1}{\frac{i}{n}}\]

Derivation

  1. Split input into 4 regimes
  2. if n < -1.2425716031584474e+142

    1. Initial program 52.6

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
    2. Using strategy rm
    3. Applied flip--52.6

      \[\leadsto 100 \cdot \frac{\color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} \cdot {\left(1 + \frac{i}{n}\right)}^{n} - 1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{n}}\]
    4. Simplified52.6

      \[\leadsto 100 \cdot \frac{\frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\]
    5. Using strategy rm
    6. Applied unsub-neg52.6

      \[\leadsto 100 \cdot \frac{\frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} - 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\]
    7. Applied div-sub52.6

      \[\leadsto 100 \cdot \frac{\color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1} - \frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{n}}\]
    8. Applied div-sub52.7

      \[\leadsto 100 \cdot \color{blue}{\left(\frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)}\]
    9. Simplified52.7

      \[\leadsto 100 \cdot \left(\color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{\frac{i}{n} \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} + 1\right)}} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)\]
    10. Taylor expanded around 0 50.6

      \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{\frac{i}{n} \cdot \left(\color{blue}{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right)} + 1\right)} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)\]
    11. Simplified50.6

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

    if -1.2425716031584474e+142 < n < -1.4440406082333634 or 4.687031455960939e-109 < n < 1.3538891898856935e+154

    1. Initial program 49.6

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
    2. Using strategy rm
    3. Applied flip--49.6

      \[\leadsto 100 \cdot \frac{\color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} \cdot {\left(1 + \frac{i}{n}\right)}^{n} - 1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{n}}\]
    4. Simplified49.6

      \[\leadsto 100 \cdot \frac{\frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\]
    5. Using strategy rm
    6. Applied unsub-neg49.6

      \[\leadsto 100 \cdot \frac{\frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} - 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\]
    7. Applied div-sub49.6

      \[\leadsto 100 \cdot \frac{\color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1} - \frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{n}}\]
    8. Applied div-sub49.7

      \[\leadsto 100 \cdot \color{blue}{\left(\frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)}\]
    9. Simplified49.6

      \[\leadsto 100 \cdot \left(\color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{\frac{i}{n} \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} + 1\right)}} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)\]
    10. Taylor expanded around 0 21.4

      \[\leadsto 100 \cdot \color{blue}{\left(\left(0.5 \cdot \left(i \cdot n\right) + \left(1 \cdot n + 1 \cdot \frac{\log 1 \cdot {n}^{2}}{i}\right)\right) - 0.5 \cdot \left(i \cdot \left(\log 1 \cdot n\right)\right)\right)}\]

    if -1.4440406082333634 < n < 4.687031455960939e-109

    1. Initial program 25.9

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt25.9

      \[\leadsto \color{blue}{\left(\sqrt{100} \cdot \sqrt{100}\right)} \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
    4. Applied associate-*l*25.9

      \[\leadsto \color{blue}{\sqrt{100} \cdot \left(\sqrt{100} \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\right)}\]
    5. Taylor expanded around 0 20.1

      \[\leadsto \sqrt{100} \cdot \color{blue}{\left(1 \cdot \left(\sqrt{100} \cdot \left({n}^{2} \cdot \log 1\right)\right) + \left(\frac{1}{2} \cdot \frac{{\left(\log 1\right)}^{2} \cdot \left({n}^{3} \cdot \sqrt{100}\right)}{i} + \frac{\log 1 \cdot \left({n}^{2} \cdot \sqrt{100}\right)}{i}\right)\right)}\]
    6. Simplified20.1

      \[\leadsto \sqrt{100} \cdot \color{blue}{\mathsf{fma}\left(1, \sqrt{100} \cdot \left({n}^{2} \cdot \log 1\right), \mathsf{fma}\left(\frac{1}{2}, \frac{{\left(\log 1\right)}^{2} \cdot \left({n}^{3} \cdot \sqrt{100}\right)}{i}, \frac{\log 1 \cdot \left({n}^{2} \cdot \sqrt{100}\right)}{i}\right)\right)}\]

    if 1.3538891898856935e+154 < n

    1. Initial program 61.6

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
    2. Using strategy rm
    3. Applied flip--61.6

      \[\leadsto 100 \cdot \frac{\color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} \cdot {\left(1 + \frac{i}{n}\right)}^{n} - 1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{n}}\]
    4. Simplified61.6

      \[\leadsto 100 \cdot \frac{\frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\]
    5. Taylor expanded around 0 51.7

      \[\leadsto 100 \cdot \frac{\frac{\color{blue}{\left(2 \cdot i + \left(2 \cdot {i}^{2} + 2 \cdot \left(\log 1 \cdot n\right)\right)\right) - 2 \cdot \left({i}^{2} \cdot \log 1\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\]
    6. Simplified51.7

      \[\leadsto 100 \cdot \frac{\frac{\color{blue}{\mathsf{fma}\left(i, 2, \mathsf{fma}\left(2, {i}^{2}, 2 \cdot \left(\log 1 \cdot n\right)\right) - 2 \cdot \left({i}^{2} \cdot \log 1\right)\right)}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification29.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;n \le -1.242571603158447402612826938411730448414 \cdot 10^{142}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}{\frac{i}{n} \cdot \left(\mathsf{fma}\left(1, i, \mathsf{fma}\left(\log 1, n, 1\right)\right) + 1\right)} - \frac{\frac{1 \cdot 1}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\right)\\ \mathbf{elif}\;n \le -1.444040608233363442991503688972443342209:\\ \;\;\;\;100 \cdot \left(\left(0.5 \cdot \left(i \cdot n\right) + \left(1 \cdot n + 1 \cdot \frac{\log 1 \cdot {n}^{2}}{i}\right)\right) - 0.5 \cdot \left(i \cdot \left(\log 1 \cdot n\right)\right)\right)\\ \mathbf{elif}\;n \le 4.687031455960939276601935165861541225984 \cdot 10^{-109}:\\ \;\;\;\;\sqrt{100} \cdot \mathsf{fma}\left(1, \sqrt{100} \cdot \left({n}^{2} \cdot \log 1\right), \mathsf{fma}\left(\frac{1}{2}, \frac{{\left(\log 1\right)}^{2} \cdot \left({n}^{3} \cdot \sqrt{100}\right)}{i}, \frac{\log 1 \cdot \left({n}^{2} \cdot \sqrt{100}\right)}{i}\right)\right)\\ \mathbf{elif}\;n \le 1.3538891898856935363908521183491446525 \cdot 10^{154}:\\ \;\;\;\;100 \cdot \left(\left(0.5 \cdot \left(i \cdot n\right) + \left(1 \cdot n + 1 \cdot \frac{\log 1 \cdot {n}^{2}}{i}\right)\right) - 0.5 \cdot \left(i \cdot \left(\log 1 \cdot n\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{\frac{\mathsf{fma}\left(i, 2, \mathsf{fma}\left(2, {i}^{2}, 2 \cdot \left(\log 1 \cdot n\right)\right) - 2 \cdot \left({i}^{2} \cdot \log 1\right)\right)}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019356 +o rules:numerics
(FPCore (i n)
  :name "Compound Interest"
  :precision binary64

  :herbie-target
  (* 100 (/ (- (exp (* n (if (== (+ 1 (/ i n)) 1) (/ i n) (/ (* (/ i n) (log (+ 1 (/ i n)))) (- (+ (/ i n) 1) 1))))) 1) (/ i n)))

  (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))))