Average Error: 42.5 → 18.8
Time: 3.5m
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;i \le -1.8984797370362623:\\ \;\;\;\;\left(\frac{n}{i} \cdot \left({\left(\frac{1}{\frac{n}{i}}\right)}^{n} - 1\right)\right) \cdot 100\\ \mathbf{elif}\;i \le 1.1173760773735925 \cdot 10^{-241}:\\ \;\;\;\;100 \cdot \left(n + n \cdot \left(\frac{1}{2} \cdot i + \left(i \cdot i\right) \cdot \left(\left(i \cdot \frac{5}{216} + \frac{1}{6}\right) + \left(i \cdot i\right) \cdot \frac{1}{432}\right)\right)\right)\\ \mathbf{elif}\;i \le 3.8569470324880954 \cdot 10^{-10}:\\ \;\;\;\;100 \cdot \left(\frac{1}{i} \cdot \left(n \cdot \left(i + i \cdot \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\begin{array}{l}
\mathbf{if}\;i \le -1.8984797370362623:\\
\;\;\;\;\left(\frac{n}{i} \cdot \left({\left(\frac{1}{\frac{n}{i}}\right)}^{n} - 1\right)\right) \cdot 100\\

\mathbf{elif}\;i \le 1.1173760773735925 \cdot 10^{-241}:\\
\;\;\;\;100 \cdot \left(n + n \cdot \left(\frac{1}{2} \cdot i + \left(i \cdot i\right) \cdot \left(\left(i \cdot \frac{5}{216} + \frac{1}{6}\right) + \left(i \cdot i\right) \cdot \frac{1}{432}\right)\right)\right)\\

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

\mathbf{else}:\\
\;\;\;\;0\\

\end{array}
double f(double i, double n) {
        double r44389488 = 100.0;
        double r44389489 = 1.0;
        double r44389490 = i;
        double r44389491 = n;
        double r44389492 = r44389490 / r44389491;
        double r44389493 = r44389489 + r44389492;
        double r44389494 = pow(r44389493, r44389491);
        double r44389495 = r44389494 - r44389489;
        double r44389496 = r44389495 / r44389492;
        double r44389497 = r44389488 * r44389496;
        return r44389497;
}

double f(double i, double n) {
        double r44389498 = i;
        double r44389499 = -1.8984797370362623;
        bool r44389500 = r44389498 <= r44389499;
        double r44389501 = n;
        double r44389502 = r44389501 / r44389498;
        double r44389503 = 1.0;
        double r44389504 = r44389503 / r44389502;
        double r44389505 = pow(r44389504, r44389501);
        double r44389506 = r44389505 - r44389503;
        double r44389507 = r44389502 * r44389506;
        double r44389508 = 100.0;
        double r44389509 = r44389507 * r44389508;
        double r44389510 = 1.1173760773735925e-241;
        bool r44389511 = r44389498 <= r44389510;
        double r44389512 = 0.5;
        double r44389513 = r44389512 * r44389498;
        double r44389514 = r44389498 * r44389498;
        double r44389515 = 0.023148148148148147;
        double r44389516 = r44389498 * r44389515;
        double r44389517 = 0.16666666666666666;
        double r44389518 = r44389516 + r44389517;
        double r44389519 = 0.0023148148148148147;
        double r44389520 = r44389514 * r44389519;
        double r44389521 = r44389518 + r44389520;
        double r44389522 = r44389514 * r44389521;
        double r44389523 = r44389513 + r44389522;
        double r44389524 = r44389501 * r44389523;
        double r44389525 = r44389501 + r44389524;
        double r44389526 = r44389508 * r44389525;
        double r44389527 = 3.8569470324880954e-10;
        bool r44389528 = r44389498 <= r44389527;
        double r44389529 = r44389503 / r44389498;
        double r44389530 = r44389517 * r44389498;
        double r44389531 = r44389512 + r44389530;
        double r44389532 = r44389498 * r44389531;
        double r44389533 = r44389498 * r44389532;
        double r44389534 = r44389498 + r44389533;
        double r44389535 = r44389501 * r44389534;
        double r44389536 = r44389529 * r44389535;
        double r44389537 = r44389508 * r44389536;
        double r44389538 = 0.0;
        double r44389539 = r44389528 ? r44389537 : r44389538;
        double r44389540 = r44389511 ? r44389526 : r44389539;
        double r44389541 = r44389500 ? r44389509 : r44389540;
        return r44389541;
}

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.5
Target42.3
Herbie18.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 i < -1.8984797370362623

    1. Initial program 27.7

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

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

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

    if -1.8984797370362623 < i < 1.1173760773735925e-241

    1. Initial program 49.4

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

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

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

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

      \[\leadsto 100 \cdot \frac{\color{blue}{\left(\sqrt[3]{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)} \cdot \sqrt[3]{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)}\right) \cdot \sqrt[3]{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)}}}{i \cdot \frac{1}{n}}\]
    7. Applied times-frac17.5

      \[\leadsto 100 \cdot \color{blue}{\left(\frac{\sqrt[3]{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)} \cdot \sqrt[3]{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)}}{i} \cdot \frac{\sqrt[3]{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)}}{\frac{1}{n}}\right)}\]
    8. Taylor expanded around 0 54.6

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

      \[\leadsto 100 \cdot \left(\color{blue}{\left(\sqrt[3]{i \cdot i} \cdot \frac{1}{3} + \left(\frac{1}{12} \cdot \sqrt[3]{{i}^{5}} + \sqrt[3]{\frac{1}{i}}\right)\right)} \cdot \frac{\sqrt[3]{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)}}{\frac{1}{n}}\right)\]
    10. Taylor expanded around 0 17.0

      \[\leadsto 100 \cdot \color{blue}{\left(\frac{1}{6} \cdot \left({i}^{2} \cdot n\right) + \left(\frac{5}{216} \cdot \left({i}^{3} \cdot n\right) + \left(\frac{1}{432} \cdot \left({i}^{4} \cdot n\right) + \left(\frac{1}{2} \cdot \left(i \cdot n\right) + n\right)\right)\right)\right)}\]
    11. Simplified17.0

      \[\leadsto 100 \cdot \color{blue}{\left(n + n \cdot \left(\left(i \cdot i\right) \cdot \left(\left(\frac{1}{6} + i \cdot \frac{5}{216}\right) + \frac{1}{432} \cdot \left(i \cdot i\right)\right) + \frac{1}{2} \cdot i\right)\right)}\]

    if 1.1173760773735925e-241 < i < 3.8569470324880954e-10

    1. Initial program 51.4

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

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

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

      \[\leadsto 100 \cdot \frac{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)}{\color{blue}{i \cdot \frac{1}{n}}}\]
    6. Applied *-un-lft-identity29.9

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

      \[\leadsto 100 \cdot \color{blue}{\left(\frac{1}{i} \cdot \frac{i + \left(i \cdot i\right) \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right)}{\frac{1}{n}}\right)}\]
    8. Simplified14.4

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

    if 3.8569470324880954e-10 < i

    1. Initial program 32.0

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

      \[\leadsto \color{blue}{0}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification18.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le -1.8984797370362623:\\ \;\;\;\;\left(\frac{n}{i} \cdot \left({\left(\frac{1}{\frac{n}{i}}\right)}^{n} - 1\right)\right) \cdot 100\\ \mathbf{elif}\;i \le 1.1173760773735925 \cdot 10^{-241}:\\ \;\;\;\;100 \cdot \left(n + n \cdot \left(\frac{1}{2} \cdot i + \left(i \cdot i\right) \cdot \left(\left(i \cdot \frac{5}{216} + \frac{1}{6}\right) + \left(i \cdot i\right) \cdot \frac{1}{432}\right)\right)\right)\\ \mathbf{elif}\;i \le 3.8569470324880954 \cdot 10^{-10}:\\ \;\;\;\;100 \cdot \left(\frac{1}{i} \cdot \left(n \cdot \left(i + i \cdot \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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

  :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))))