Average Error: 42.3 → 22.6
Time: 1.1m
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;n \le -1.4608487543202562 \cdot 10^{+112}:\\ \;\;\;\;100 \cdot n + \left(\frac{50}{3} \cdot i + 50\right) \cdot \left(i \cdot n\right)\\ \mathbf{elif}\;n \le -0.5086740071675135:\\ \;\;\;\;\left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{1}{n}} - n\right) \cdot \frac{100}{i}\\ \mathbf{elif}\;n \le 6.641285833915873 \cdot 10^{-252}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n + \left(\frac{50}{3} \cdot i + 50\right) \cdot \left(i \cdot n\right)\\ \end{array}\]
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\begin{array}{l}
\mathbf{if}\;n \le -1.4608487543202562 \cdot 10^{+112}:\\
\;\;\;\;100 \cdot n + \left(\frac{50}{3} \cdot i + 50\right) \cdot \left(i \cdot n\right)\\

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

\mathbf{elif}\;n \le 6.641285833915873 \cdot 10^{-252}:\\
\;\;\;\;0\\

\mathbf{else}:\\
\;\;\;\;100 \cdot n + \left(\frac{50}{3} \cdot i + 50\right) \cdot \left(i \cdot n\right)\\

\end{array}
double f(double i, double n) {
        double r4420563 = 100.0;
        double r4420564 = 1.0;
        double r4420565 = i;
        double r4420566 = n;
        double r4420567 = r4420565 / r4420566;
        double r4420568 = r4420564 + r4420567;
        double r4420569 = pow(r4420568, r4420566);
        double r4420570 = r4420569 - r4420564;
        double r4420571 = r4420570 / r4420567;
        double r4420572 = r4420563 * r4420571;
        return r4420572;
}

double f(double i, double n) {
        double r4420573 = n;
        double r4420574 = -1.4608487543202562e+112;
        bool r4420575 = r4420573 <= r4420574;
        double r4420576 = 100.0;
        double r4420577 = r4420576 * r4420573;
        double r4420578 = 16.666666666666668;
        double r4420579 = i;
        double r4420580 = r4420578 * r4420579;
        double r4420581 = 50.0;
        double r4420582 = r4420580 + r4420581;
        double r4420583 = r4420579 * r4420573;
        double r4420584 = r4420582 * r4420583;
        double r4420585 = r4420577 + r4420584;
        double r4420586 = -0.5086740071675135;
        bool r4420587 = r4420573 <= r4420586;
        double r4420588 = r4420579 / r4420573;
        double r4420589 = 1.0;
        double r4420590 = r4420588 + r4420589;
        double r4420591 = pow(r4420590, r4420573);
        double r4420592 = r4420589 / r4420573;
        double r4420593 = r4420591 / r4420592;
        double r4420594 = r4420593 - r4420573;
        double r4420595 = r4420576 / r4420579;
        double r4420596 = r4420594 * r4420595;
        double r4420597 = 6.641285833915873e-252;
        bool r4420598 = r4420573 <= r4420597;
        double r4420599 = 0.0;
        double r4420600 = r4420598 ? r4420599 : r4420585;
        double r4420601 = r4420587 ? r4420596 : r4420600;
        double r4420602 = r4420575 ? r4420585 : r4420601;
        return r4420602;
}

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.3
Target42.2
Herbie22.6
\[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 3 regimes
  2. if n < -1.4608487543202562e+112 or 6.641285833915873e-252 < n

    1. Initial program 54.3

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

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

      \[\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-frac54.6

      \[\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*54.6

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

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

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

      \[\leadsto \frac{100}{i} \cdot \frac{\color{blue}{\left(\left(i \cdot i\right) \cdot \frac{1}{2} + \left(i \cdot \left(i \cdot i\right)\right) \cdot \frac{1}{6}\right) + i}}{\frac{1}{n}}\]
    10. Taylor expanded around inf 23.1

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

      \[\leadsto \color{blue}{\left(\left(i \cdot i\right) \cdot n\right) \cdot \frac{50}{3} + n \cdot \left(100 + 50 \cdot i\right)}\]
    12. Taylor expanded around -inf 23.1

      \[\leadsto \color{blue}{\frac{50}{3} \cdot \left({i}^{2} \cdot n\right) + \left(100 \cdot n + 50 \cdot \left(i \cdot n\right)\right)}\]
    13. Simplified23.0

      \[\leadsto \color{blue}{100 \cdot n + \left(i \cdot n\right) \cdot \left(\frac{50}{3} \cdot i + 50\right)}\]

    if -1.4608487543202562e+112 < n < -0.5086740071675135

    1. Initial program 35.5

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

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

      \[\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-frac35.4

      \[\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*35.5

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

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

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

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

    if -0.5086740071675135 < n < 6.641285833915873e-252

    1. Initial program 18.3

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

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

      \[\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-frac18.5

      \[\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*18.7

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;n \le -1.4608487543202562 \cdot 10^{+112}:\\ \;\;\;\;100 \cdot n + \left(\frac{50}{3} \cdot i + 50\right) \cdot \left(i \cdot n\right)\\ \mathbf{elif}\;n \le -0.5086740071675135:\\ \;\;\;\;\left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{1}{n}} - n\right) \cdot \frac{100}{i}\\ \mathbf{elif}\;n \le 6.641285833915873 \cdot 10^{-252}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n + \left(\frac{50}{3} \cdot i + 50\right) \cdot \left(i \cdot n\right)\\ \end{array}\]

Reproduce

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