Average Error: 42.8 → 23.3
Time: 27.9s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;n \le -4.12718938658690470334225094125126747311 \cdot 10^{214}:\\ \;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\ \mathbf{elif}\;n \le -1.767552428992892694746701860906965261931 \cdot 10^{78}:\\ \;\;\;\;100 \cdot \left(\frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{\frac{1}{n}} \cdot \frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{i} - \frac{1}{\frac{i}{n}}\right)\\ \mathbf{elif}\;n \le -7.520459214308253406879712470442768842157 \cdot 10^{45}:\\ \;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\ \mathbf{elif}\;n \le -0.04879868666602225901751666015115915797651:\\ \;\;\;\;\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - n \cdot \frac{1}{i}\right) \cdot 100\\ \mathbf{elif}\;n \le 6.462722036125863080209583318691171911515 \cdot 10^{-151}:\\ \;\;\;\;\left(\frac{100 \cdot \log 1}{\frac{i}{n}} + \left(\frac{50}{\frac{i}{\left(\log 1 \cdot n\right) \cdot \left(\log 1 \cdot n\right)}} + n \cdot \left(100 \cdot \log 1\right)\right)\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\ \end{array}\]
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\begin{array}{l}
\mathbf{if}\;n \le -4.12718938658690470334225094125126747311 \cdot 10^{214}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\

\mathbf{elif}\;n \le -1.767552428992892694746701860906965261931 \cdot 10^{78}:\\
\;\;\;\;100 \cdot \left(\frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{\frac{1}{n}} \cdot \frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{i} - \frac{1}{\frac{i}{n}}\right)\\

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

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

\mathbf{elif}\;n \le 6.462722036125863080209583318691171911515 \cdot 10^{-151}:\\
\;\;\;\;\left(\frac{100 \cdot \log 1}{\frac{i}{n}} + \left(\frac{50}{\frac{i}{\left(\log 1 \cdot n\right) \cdot \left(\log 1 \cdot n\right)}} + n \cdot \left(100 \cdot \log 1\right)\right)\right) \cdot n\\

\mathbf{else}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\

\end{array}
double f(double i, double n) {
        double r6388754 = 100.0;
        double r6388755 = 1.0;
        double r6388756 = i;
        double r6388757 = n;
        double r6388758 = r6388756 / r6388757;
        double r6388759 = r6388755 + r6388758;
        double r6388760 = pow(r6388759, r6388757);
        double r6388761 = r6388760 - r6388755;
        double r6388762 = r6388761 / r6388758;
        double r6388763 = r6388754 * r6388762;
        return r6388763;
}

double f(double i, double n) {
        double r6388764 = n;
        double r6388765 = -4.1271893865869047e+214;
        bool r6388766 = r6388764 <= r6388765;
        double r6388767 = 100.0;
        double r6388768 = 1.0;
        double r6388769 = log(r6388768);
        double r6388770 = r6388769 * r6388764;
        double r6388771 = i;
        double r6388772 = r6388771 * r6388768;
        double r6388773 = r6388770 + r6388772;
        double r6388774 = 0.5;
        double r6388775 = r6388771 * r6388771;
        double r6388776 = r6388774 * r6388775;
        double r6388777 = r6388775 * r6388769;
        double r6388778 = r6388774 * r6388777;
        double r6388779 = r6388776 - r6388778;
        double r6388780 = r6388773 + r6388779;
        double r6388781 = r6388780 / r6388771;
        double r6388782 = r6388767 * r6388781;
        double r6388783 = r6388764 * r6388782;
        double r6388784 = -1.7675524289928927e+78;
        bool r6388785 = r6388764 <= r6388784;
        double r6388786 = r6388771 / r6388764;
        double r6388787 = r6388768 + r6388786;
        double r6388788 = pow(r6388787, r6388764);
        double r6388789 = sqrt(r6388788);
        double r6388790 = 1.0;
        double r6388791 = r6388790 / r6388764;
        double r6388792 = r6388789 / r6388791;
        double r6388793 = r6388789 / r6388771;
        double r6388794 = r6388792 * r6388793;
        double r6388795 = r6388768 / r6388786;
        double r6388796 = r6388794 - r6388795;
        double r6388797 = r6388767 * r6388796;
        double r6388798 = -7.520459214308253e+45;
        bool r6388799 = r6388764 <= r6388798;
        double r6388800 = -0.04879868666602226;
        bool r6388801 = r6388764 <= r6388800;
        double r6388802 = r6388788 / r6388786;
        double r6388803 = r6388768 / r6388771;
        double r6388804 = r6388764 * r6388803;
        double r6388805 = r6388802 - r6388804;
        double r6388806 = r6388805 * r6388767;
        double r6388807 = 6.462722036125863e-151;
        bool r6388808 = r6388764 <= r6388807;
        double r6388809 = r6388767 * r6388769;
        double r6388810 = r6388809 / r6388786;
        double r6388811 = 50.0;
        double r6388812 = r6388770 * r6388770;
        double r6388813 = r6388771 / r6388812;
        double r6388814 = r6388811 / r6388813;
        double r6388815 = r6388764 * r6388809;
        double r6388816 = r6388814 + r6388815;
        double r6388817 = r6388810 + r6388816;
        double r6388818 = r6388817 * r6388764;
        double r6388819 = r6388808 ? r6388818 : r6388783;
        double r6388820 = r6388801 ? r6388806 : r6388819;
        double r6388821 = r6388799 ? r6388783 : r6388820;
        double r6388822 = r6388785 ? r6388797 : r6388821;
        double r6388823 = r6388766 ? r6388783 : r6388822;
        return r6388823;
}

Error

Bits error versus i

Bits error versus n

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original42.8
Target42.5
Herbie23.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 < -4.1271893865869047e+214 or -1.7675524289928927e+78 < n < -7.520459214308253e+45 or 6.462722036125863e-151 < n

    1. Initial program 56.8

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

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

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

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

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

    if -4.1271893865869047e+214 < n < -1.7675524289928927e+78

    1. Initial program 42.3

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

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

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

      \[\leadsto 100 \cdot \left(\frac{\color{blue}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}} \cdot \sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}}{i \cdot \frac{1}{n}} - \frac{1}{\frac{i}{n}}\right)\]
    7. Applied times-frac42.1

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

    if -7.520459214308253e+45 < n < -0.04879868666602226

    1. Initial program 32.8

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

      \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)}\]
    4. Using strategy rm
    5. Applied associate-/r/33.1

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

    if -0.04879868666602226 < n < 6.462722036125863e-151

    1. Initial program 24.4

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

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

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

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

      \[\leadsto \color{blue}{\left(\frac{100 \cdot \log 1}{\frac{i}{n}} + \left(\frac{50}{\frac{i}{\left(\log 1 \cdot n\right) \cdot \left(\log 1 \cdot n\right)}} + \left(100 \cdot \log 1\right) \cdot n\right)\right)} \cdot n\]
  3. Recombined 4 regimes into one program.
  4. Final simplification23.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;n \le -4.12718938658690470334225094125126747311 \cdot 10^{214}:\\ \;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\ \mathbf{elif}\;n \le -1.767552428992892694746701860906965261931 \cdot 10^{78}:\\ \;\;\;\;100 \cdot \left(\frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{\frac{1}{n}} \cdot \frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{i} - \frac{1}{\frac{i}{n}}\right)\\ \mathbf{elif}\;n \le -7.520459214308253406879712470442768842157 \cdot 10^{45}:\\ \;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\ \mathbf{elif}\;n \le -0.04879868666602225901751666015115915797651:\\ \;\;\;\;\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - n \cdot \frac{1}{i}\right) \cdot 100\\ \mathbf{elif}\;n \le 6.462722036125863080209583318691171911515 \cdot 10^{-151}:\\ \;\;\;\;\left(\frac{100 \cdot \log 1}{\frac{i}{n}} + \left(\frac{50}{\frac{i}{\left(\log 1 \cdot n\right) \cdot \left(\log 1 \cdot n\right)}} + n \cdot \left(100 \cdot \log 1\right)\right)\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019192 
(FPCore (i n)
  :name "Compound Interest"

  :herbie-target
  (* 100.0 (/ (- (exp (* n (if (== (+ 1.0 (/ i n)) 1.0) (/ i n) (/ (* (/ i n) (log (+ 1.0 (/ i n)))) (- (+ (/ i n) 1.0) 1.0))))) 1.0) (/ i n)))

  (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n))))