Average Error: 43.2 → 21.8
Time: 18.6s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;n \le -4.149010238435241158672102707990865653784 \cdot 10^{81}:\\ \;\;\;\;\left(100 \cdot \frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i}\right) \cdot n\\ \mathbf{elif}\;n \le -542476406070019424583054687209865554690000:\\ \;\;\;\;\left(100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i}\right) \cdot n\\ \mathbf{elif}\;n \le -4.613441314353611488741080393083393573761:\\ \;\;\;\;\left(100 \cdot \frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i}\right) \cdot n\\ \mathbf{elif}\;n \le -1.4890995792184122714112127553574285671 \cdot 10^{-273}:\\ \;\;\;\;100 \cdot \frac{\log \left(e^{{\left(1 + \frac{i}{n}\right)}^{n} - 1}\right)}{\frac{i}{n}}\\ \mathbf{elif}\;n \le 1.010512134864181889603036020016059338592 \cdot 10^{-197}:\\ \;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\ \mathbf{else}:\\ \;\;\;\;\left(100 \cdot \frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i}\right) \cdot n\\ \end{array}\]
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\begin{array}{l}
\mathbf{if}\;n \le -4.149010238435241158672102707990865653784 \cdot 10^{81}:\\
\;\;\;\;\left(100 \cdot \frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i}\right) \cdot n\\

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

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

\mathbf{elif}\;n \le -1.4890995792184122714112127553574285671 \cdot 10^{-273}:\\
\;\;\;\;100 \cdot \frac{\log \left(e^{{\left(1 + \frac{i}{n}\right)}^{n} - 1}\right)}{\frac{i}{n}}\\

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

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

\end{array}
double f(double i, double n) {
        double r149760 = 100.0;
        double r149761 = 1.0;
        double r149762 = i;
        double r149763 = n;
        double r149764 = r149762 / r149763;
        double r149765 = r149761 + r149764;
        double r149766 = pow(r149765, r149763);
        double r149767 = r149766 - r149761;
        double r149768 = r149767 / r149764;
        double r149769 = r149760 * r149768;
        return r149769;
}

double f(double i, double n) {
        double r149770 = n;
        double r149771 = -4.149010238435241e+81;
        bool r149772 = r149770 <= r149771;
        double r149773 = 100.0;
        double r149774 = 1.0;
        double r149775 = i;
        double r149776 = r149774 * r149775;
        double r149777 = 0.5;
        double r149778 = 2.0;
        double r149779 = pow(r149775, r149778);
        double r149780 = r149777 * r149779;
        double r149781 = log(r149774);
        double r149782 = r149781 * r149770;
        double r149783 = r149780 + r149782;
        double r149784 = r149776 + r149783;
        double r149785 = r149779 * r149781;
        double r149786 = r149777 * r149785;
        double r149787 = r149784 - r149786;
        double r149788 = r149787 / r149775;
        double r149789 = r149773 * r149788;
        double r149790 = r149789 * r149770;
        double r149791 = -5.424764060700194e+41;
        bool r149792 = r149770 <= r149791;
        double r149793 = r149775 / r149770;
        double r149794 = r149774 + r149793;
        double r149795 = pow(r149794, r149770);
        double r149796 = r149795 - r149774;
        double r149797 = r149796 / r149775;
        double r149798 = r149773 * r149797;
        double r149799 = r149798 * r149770;
        double r149800 = -4.6134413143536115;
        bool r149801 = r149770 <= r149800;
        double r149802 = -1.4890995792184123e-273;
        bool r149803 = r149770 <= r149802;
        double r149804 = exp(r149796);
        double r149805 = log(r149804);
        double r149806 = r149805 / r149793;
        double r149807 = r149773 * r149806;
        double r149808 = 1.0105121348641819e-197;
        bool r149809 = r149770 <= r149808;
        double r149810 = 1.0;
        double r149811 = r149782 + r149810;
        double r149812 = r149776 + r149811;
        double r149813 = r149812 - r149774;
        double r149814 = r149813 / r149793;
        double r149815 = r149773 * r149814;
        double r149816 = r149809 ? r149815 : r149790;
        double r149817 = r149803 ? r149807 : r149816;
        double r149818 = r149801 ? r149790 : r149817;
        double r149819 = r149792 ? r149799 : r149818;
        double r149820 = r149772 ? r149790 : r149819;
        return r149820;
}

Error

Bits error versus i

Bits error versus n

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original43.2
Target42.7
Herbie21.8
\[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.149010238435241e+81 or -5.424764060700194e+41 < n < -4.6134413143536115 or 1.0105121348641819e-197 < n

    1. Initial program 54.1

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

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

      \[\leadsto 100 \cdot \color{blue}{\left(\frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i} \cdot n\right)}\]
    5. Applied associate-*r*23.2

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

    if -4.149010238435241e+81 < n < -5.424764060700194e+41

    1. Initial program 35.3

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

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

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

    if -4.6134413143536115 < n < -1.4890995792184123e-273

    1. Initial program 16.1

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

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

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

      \[\leadsto 100 \cdot \frac{\color{blue}{\log \left(\frac{e^{{\left(1 + \frac{i}{n}\right)}^{n}}}{e^{1}}\right)}}{\frac{i}{n}}\]
    6. Simplified16.1

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

    if -1.4890995792184123e-273 < n < 1.0105121348641819e-197

    1. Initial program 30.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;n \le -4.149010238435241158672102707990865653784 \cdot 10^{81}:\\ \;\;\;\;\left(100 \cdot \frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i}\right) \cdot n\\ \mathbf{elif}\;n \le -542476406070019424583054687209865554690000:\\ \;\;\;\;\left(100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i}\right) \cdot n\\ \mathbf{elif}\;n \le -4.613441314353611488741080393083393573761:\\ \;\;\;\;\left(100 \cdot \frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i}\right) \cdot n\\ \mathbf{elif}\;n \le -1.4890995792184122714112127553574285671 \cdot 10^{-273}:\\ \;\;\;\;100 \cdot \frac{\log \left(e^{{\left(1 + \frac{i}{n}\right)}^{n} - 1}\right)}{\frac{i}{n}}\\ \mathbf{elif}\;n \le 1.010512134864181889603036020016059338592 \cdot 10^{-197}:\\ \;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\ \mathbf{else}:\\ \;\;\;\;\left(100 \cdot \frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i}\right) \cdot n\\ \end{array}\]

Reproduce

herbie shell --seed 2019322 
(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))))