Average Error: 42.9 → 20.5
Time: 15.4s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;i \le -0.5511580558700998055954300980374682694674:\\ \;\;\;\;100 \cdot \frac{\frac{{\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}}\\ \mathbf{elif}\;i \le 6.118499728754747261555536370589189972005 \cdot 10^{-197}:\\ \;\;\;\;100 \cdot \left(\left(\sqrt{\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 \sqrt{\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\right)\\ \mathbf{elif}\;i \le 8648182.72403052262961864471435546875:\\ \;\;\;\;\frac{100 \cdot \left(\left(\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)\right) \cdot n\right)}{i}\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{i} \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{1}{n}}\\ \end{array}\]
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\begin{array}{l}
\mathbf{if}\;i \le -0.5511580558700998055954300980374682694674:\\
\;\;\;\;100 \cdot \frac{\frac{{\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}}\\

\mathbf{elif}\;i \le 6.118499728754747261555536370589189972005 \cdot 10^{-197}:\\
\;\;\;\;100 \cdot \left(\left(\sqrt{\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 \sqrt{\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\right)\\

\mathbf{elif}\;i \le 8648182.72403052262961864471435546875:\\
\;\;\;\;\frac{100 \cdot \left(\left(\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)\right) \cdot n\right)}{i}\\

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

\end{array}
double f(double i, double n) {
        double r129139 = 100.0;
        double r129140 = 1.0;
        double r129141 = i;
        double r129142 = n;
        double r129143 = r129141 / r129142;
        double r129144 = r129140 + r129143;
        double r129145 = pow(r129144, r129142);
        double r129146 = r129145 - r129140;
        double r129147 = r129146 / r129143;
        double r129148 = r129139 * r129147;
        return r129148;
}

double f(double i, double n) {
        double r129149 = i;
        double r129150 = -0.5511580558700998;
        bool r129151 = r129149 <= r129150;
        double r129152 = 100.0;
        double r129153 = 1.0;
        double r129154 = n;
        double r129155 = r129149 / r129154;
        double r129156 = r129153 + r129155;
        double r129157 = 2.0;
        double r129158 = r129157 * r129154;
        double r129159 = pow(r129156, r129158);
        double r129160 = r129153 * r129153;
        double r129161 = -r129160;
        double r129162 = r129159 + r129161;
        double r129163 = pow(r129156, r129154);
        double r129164 = r129163 + r129153;
        double r129165 = r129162 / r129164;
        double r129166 = r129165 / r129155;
        double r129167 = r129152 * r129166;
        double r129168 = 6.118499728754747e-197;
        bool r129169 = r129149 <= r129168;
        double r129170 = r129153 * r129149;
        double r129171 = 0.5;
        double r129172 = pow(r129149, r129157);
        double r129173 = r129171 * r129172;
        double r129174 = log(r129153);
        double r129175 = r129174 * r129154;
        double r129176 = r129173 + r129175;
        double r129177 = r129170 + r129176;
        double r129178 = r129172 * r129174;
        double r129179 = r129171 * r129178;
        double r129180 = r129177 - r129179;
        double r129181 = r129180 / r129149;
        double r129182 = sqrt(r129181);
        double r129183 = r129182 * r129182;
        double r129184 = r129183 * r129154;
        double r129185 = r129152 * r129184;
        double r129186 = 8648182.724030523;
        bool r129187 = r129149 <= r129186;
        double r129188 = r129180 * r129154;
        double r129189 = r129152 * r129188;
        double r129190 = r129189 / r129149;
        double r129191 = r129152 / r129149;
        double r129192 = r129163 - r129153;
        double r129193 = 1.0;
        double r129194 = r129193 / r129154;
        double r129195 = r129192 / r129194;
        double r129196 = r129191 * r129195;
        double r129197 = r129187 ? r129190 : r129196;
        double r129198 = r129169 ? r129185 : r129197;
        double r129199 = r129151 ? r129167 : r129198;
        return r129199;
}

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.9
Target43.1
Herbie20.5
\[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 i < -0.5511580558700998

    1. Initial program 26.8

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

      \[\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. Simplified26.8

      \[\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}}\]

    if -0.5511580558700998 < i < 6.118499728754747e-197

    1. Initial program 50.7

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

      \[\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/16.3

      \[\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. Using strategy rm
    6. Applied add-sqr-sqrt16.3

      \[\leadsto 100 \cdot \left(\color{blue}{\left(\sqrt{\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 \sqrt{\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\right)\]

    if 6.118499728754747e-197 < i < 8648182.724030523

    1. Initial program 51.0

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

      \[\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/19.0

      \[\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. Using strategy rm
    6. Applied associate-*l/16.1

      \[\leadsto 100 \cdot \color{blue}{\frac{\left(\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)\right) \cdot n}{i}}\]
    7. Applied associate-*r/16.2

      \[\leadsto \color{blue}{\frac{100 \cdot \left(\left(\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)\right) \cdot n\right)}{i}}\]

    if 8648182.724030523 < i

    1. Initial program 31.1

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le -0.5511580558700998055954300980374682694674:\\ \;\;\;\;100 \cdot \frac{\frac{{\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}}\\ \mathbf{elif}\;i \le 6.118499728754747261555536370589189972005 \cdot 10^{-197}:\\ \;\;\;\;100 \cdot \left(\left(\sqrt{\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 \sqrt{\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\right)\\ \mathbf{elif}\;i \le 8648182.72403052262961864471435546875:\\ \;\;\;\;\frac{100 \cdot \left(\left(\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)\right) \cdot n\right)}{i}\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{i} \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{1}{n}}\\ \end{array}\]

Reproduce

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