Average Error: 43.1 → 30.1
Time: 28.6s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;i \le -42606.74875587941642152145504951477050781:\\ \;\;\;\;\left(100 \cdot \left(n \cdot \left({\left(\frac{i}{n}\right)}^{n} - 1\right)\right)\right) \cdot \frac{1}{i}\\ \mathbf{elif}\;i \le 3.332988420430884258276291203877273900307 \cdot 10^{-27}:\\ \;\;\;\;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)}{\frac{i}{n}}\\ \mathbf{elif}\;i \le 9.944860624286458495633005962801713322847 \cdot 10^{141}:\\ \;\;\;\;\left(\left(\left(\frac{1}{6} \cdot \frac{{\left(\log i\right)}^{3}}{\frac{i}{100 \cdot {n}^{4}}} + \frac{1}{2} \cdot \left(\frac{100 \cdot \left({n}^{3} \cdot {\left(\log n\right)}^{2}\right)}{i} + \frac{{\left(\log i\right)}^{2}}{\frac{i}{100 \cdot {n}^{3}}}\right)\right) + \left(\frac{\left({n}^{2} \cdot 100\right) \cdot \log i}{i} + \frac{\frac{1}{2} \cdot \left(\left(100 \cdot \left({n}^{4} \cdot {\left(\log n\right)}^{2}\right)\right) \cdot \log i\right)}{i}\right)\right) - \left(\frac{1}{2} \cdot \frac{{\left(\log i\right)}^{2}}{\frac{i}{\left(100 \cdot {n}^{4}\right) \cdot \log n}} + \frac{\frac{1}{6} \cdot \left(\left({n}^{4} \cdot {\left(\log n\right)}^{3}\right) \cdot 100\right)}{i}\right)\right) - \left(\frac{\left(\left({n}^{3} \cdot \log n\right) \cdot 100\right) \cdot \log i}{i} + \frac{100 \cdot \left({n}^{2} \cdot \log n\right)}{i}\right)\\ \mathbf{elif}\;i \le 2.568245662391043108180991997152758915531 \cdot 10^{231}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i} \cdot n\right)\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\ \end{array}\]
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\begin{array}{l}
\mathbf{if}\;i \le -42606.74875587941642152145504951477050781:\\
\;\;\;\;\left(100 \cdot \left(n \cdot \left({\left(\frac{i}{n}\right)}^{n} - 1\right)\right)\right) \cdot \frac{1}{i}\\

\mathbf{elif}\;i \le 3.332988420430884258276291203877273900307 \cdot 10^{-27}:\\
\;\;\;\;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)}{\frac{i}{n}}\\

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

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

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

\end{array}
double f(double i, double n) {
        double r94596 = 100.0;
        double r94597 = 1.0;
        double r94598 = i;
        double r94599 = n;
        double r94600 = r94598 / r94599;
        double r94601 = r94597 + r94600;
        double r94602 = pow(r94601, r94599);
        double r94603 = r94602 - r94597;
        double r94604 = r94603 / r94600;
        double r94605 = r94596 * r94604;
        return r94605;
}

double f(double i, double n) {
        double r94606 = i;
        double r94607 = -42606.74875587942;
        bool r94608 = r94606 <= r94607;
        double r94609 = 100.0;
        double r94610 = n;
        double r94611 = r94606 / r94610;
        double r94612 = pow(r94611, r94610);
        double r94613 = 1.0;
        double r94614 = r94612 - r94613;
        double r94615 = r94610 * r94614;
        double r94616 = r94609 * r94615;
        double r94617 = 1.0;
        double r94618 = r94617 / r94606;
        double r94619 = r94616 * r94618;
        double r94620 = 3.332988420430884e-27;
        bool r94621 = r94606 <= r94620;
        double r94622 = r94613 * r94606;
        double r94623 = 0.5;
        double r94624 = 2.0;
        double r94625 = pow(r94606, r94624);
        double r94626 = r94623 * r94625;
        double r94627 = log(r94613);
        double r94628 = r94627 * r94610;
        double r94629 = r94626 + r94628;
        double r94630 = r94622 + r94629;
        double r94631 = r94625 * r94627;
        double r94632 = r94623 * r94631;
        double r94633 = r94630 - r94632;
        double r94634 = r94633 / r94611;
        double r94635 = r94609 * r94634;
        double r94636 = 9.944860624286458e+141;
        bool r94637 = r94606 <= r94636;
        double r94638 = 0.16666666666666666;
        double r94639 = log(r94606);
        double r94640 = 3.0;
        double r94641 = pow(r94639, r94640);
        double r94642 = 4.0;
        double r94643 = pow(r94610, r94642);
        double r94644 = r94609 * r94643;
        double r94645 = r94606 / r94644;
        double r94646 = r94641 / r94645;
        double r94647 = r94638 * r94646;
        double r94648 = 0.5;
        double r94649 = pow(r94610, r94640);
        double r94650 = log(r94610);
        double r94651 = pow(r94650, r94624);
        double r94652 = r94649 * r94651;
        double r94653 = r94609 * r94652;
        double r94654 = r94653 / r94606;
        double r94655 = pow(r94639, r94624);
        double r94656 = r94609 * r94649;
        double r94657 = r94606 / r94656;
        double r94658 = r94655 / r94657;
        double r94659 = r94654 + r94658;
        double r94660 = r94648 * r94659;
        double r94661 = r94647 + r94660;
        double r94662 = pow(r94610, r94624);
        double r94663 = r94662 * r94609;
        double r94664 = r94663 * r94639;
        double r94665 = r94664 / r94606;
        double r94666 = r94643 * r94651;
        double r94667 = r94609 * r94666;
        double r94668 = r94667 * r94639;
        double r94669 = r94648 * r94668;
        double r94670 = r94669 / r94606;
        double r94671 = r94665 + r94670;
        double r94672 = r94661 + r94671;
        double r94673 = r94644 * r94650;
        double r94674 = r94606 / r94673;
        double r94675 = r94655 / r94674;
        double r94676 = r94648 * r94675;
        double r94677 = pow(r94650, r94640);
        double r94678 = r94643 * r94677;
        double r94679 = r94678 * r94609;
        double r94680 = r94638 * r94679;
        double r94681 = r94680 / r94606;
        double r94682 = r94676 + r94681;
        double r94683 = r94672 - r94682;
        double r94684 = r94649 * r94650;
        double r94685 = r94684 * r94609;
        double r94686 = r94685 * r94639;
        double r94687 = r94686 / r94606;
        double r94688 = r94662 * r94650;
        double r94689 = r94609 * r94688;
        double r94690 = r94689 / r94606;
        double r94691 = r94687 + r94690;
        double r94692 = r94683 - r94691;
        double r94693 = 2.568245662391043e+231;
        bool r94694 = r94606 <= r94693;
        double r94695 = r94613 + r94611;
        double r94696 = pow(r94695, r94610);
        double r94697 = r94696 - r94613;
        double r94698 = r94697 / r94606;
        double r94699 = r94698 * r94610;
        double r94700 = r94609 * r94699;
        double r94701 = r94628 + r94617;
        double r94702 = r94622 + r94701;
        double r94703 = r94702 - r94613;
        double r94704 = r94703 / r94611;
        double r94705 = r94609 * r94704;
        double r94706 = r94694 ? r94700 : r94705;
        double r94707 = r94637 ? r94692 : r94706;
        double r94708 = r94621 ? r94635 : r94707;
        double r94709 = r94608 ? r94619 : r94708;
        return r94709;
}

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.1
Target42.8
Herbie30.1
\[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 5 regimes
  2. if i < -42606.74875587942

    1. Initial program 27.8

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

      \[\leadsto 100 \cdot \color{blue}{\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. Simplified18.8

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

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

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

    if -42606.74875587942 < i < 3.332988420430884e-27

    1. Initial program 50.7

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

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

    if 3.332988420430884e-27 < i < 9.944860624286458e+141

    1. Initial program 38.7

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

      \[\leadsto 100 \cdot \color{blue}{\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. Simplified39.2

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

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

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

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

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

    if 9.944860624286458e+141 < i < 2.568245662391043e+231

    1. Initial program 32.0

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

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

    if 2.568245662391043e+231 < i

    1. Initial program 29.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le -42606.74875587941642152145504951477050781:\\ \;\;\;\;\left(100 \cdot \left(n \cdot \left({\left(\frac{i}{n}\right)}^{n} - 1\right)\right)\right) \cdot \frac{1}{i}\\ \mathbf{elif}\;i \le 3.332988420430884258276291203877273900307 \cdot 10^{-27}:\\ \;\;\;\;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)}{\frac{i}{n}}\\ \mathbf{elif}\;i \le 9.944860624286458495633005962801713322847 \cdot 10^{141}:\\ \;\;\;\;\left(\left(\left(\frac{1}{6} \cdot \frac{{\left(\log i\right)}^{3}}{\frac{i}{100 \cdot {n}^{4}}} + \frac{1}{2} \cdot \left(\frac{100 \cdot \left({n}^{3} \cdot {\left(\log n\right)}^{2}\right)}{i} + \frac{{\left(\log i\right)}^{2}}{\frac{i}{100 \cdot {n}^{3}}}\right)\right) + \left(\frac{\left({n}^{2} \cdot 100\right) \cdot \log i}{i} + \frac{\frac{1}{2} \cdot \left(\left(100 \cdot \left({n}^{4} \cdot {\left(\log n\right)}^{2}\right)\right) \cdot \log i\right)}{i}\right)\right) - \left(\frac{1}{2} \cdot \frac{{\left(\log i\right)}^{2}}{\frac{i}{\left(100 \cdot {n}^{4}\right) \cdot \log n}} + \frac{\frac{1}{6} \cdot \left(\left({n}^{4} \cdot {\left(\log n\right)}^{3}\right) \cdot 100\right)}{i}\right)\right) - \left(\frac{\left(\left({n}^{3} \cdot \log n\right) \cdot 100\right) \cdot \log i}{i} + \frac{100 \cdot \left({n}^{2} \cdot \log n\right)}{i}\right)\\ \mathbf{elif}\;i \le 2.568245662391043108180991997152758915531 \cdot 10^{231}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i} \cdot n\right)\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\ \end{array}\]

Reproduce

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