Average Error: 43.1 → 19.2
Time: 22.0s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;i \le \frac{-4112455867215833}{4503599627370496}:\\ \;\;\;\;100 \cdot \frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\ \mathbf{elif}\;i \le \frac{3742457391875645}{36028797018963968}:\\ \;\;\;\;100 \cdot \left(\frac{\left(1 \cdot i + \left(\frac{1}{2} \cdot {i}^{2} + \log 1 \cdot n\right)\right) - \frac{1}{2} \cdot \left({i}^{2} \cdot \log 1\right)}{i} \cdot n\right)\\ \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 \frac{-4112455867215833}{4503599627370496}:\\
\;\;\;\;100 \cdot \frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\

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

\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 r124639 = 100.0;
        double r124640 = 1.0;
        double r124641 = i;
        double r124642 = n;
        double r124643 = r124641 / r124642;
        double r124644 = r124640 + r124643;
        double r124645 = pow(r124644, r124642);
        double r124646 = r124645 - r124640;
        double r124647 = r124646 / r124643;
        double r124648 = r124639 * r124647;
        return r124648;
}

double f(double i, double n) {
        double r124649 = i;
        double r124650 = -4112455867215833.0;
        double r124651 = 4503599627370496.0;
        double r124652 = r124650 / r124651;
        bool r124653 = r124649 <= r124652;
        double r124654 = 100.0;
        double r124655 = n;
        double r124656 = r124649 / r124655;
        double r124657 = pow(r124656, r124655);
        double r124658 = 1.0;
        double r124659 = r124657 - r124658;
        double r124660 = r124659 / r124656;
        double r124661 = r124654 * r124660;
        double r124662 = 3742457391875645.0;
        double r124663 = 3.602879701896397e+16;
        double r124664 = r124662 / r124663;
        bool r124665 = r124649 <= r124664;
        double r124666 = r124658 * r124649;
        double r124667 = 2.0;
        double r124668 = r124658 / r124667;
        double r124669 = 2.0;
        double r124670 = pow(r124649, r124669);
        double r124671 = r124668 * r124670;
        double r124672 = log(r124658);
        double r124673 = r124672 * r124655;
        double r124674 = r124671 + r124673;
        double r124675 = r124666 + r124674;
        double r124676 = r124670 * r124672;
        double r124677 = r124668 * r124676;
        double r124678 = r124675 - r124677;
        double r124679 = r124678 / r124649;
        double r124680 = r124679 * r124655;
        double r124681 = r124654 * r124680;
        double r124682 = r124654 / r124649;
        double r124683 = r124658 + r124656;
        double r124684 = pow(r124683, r124655);
        double r124685 = r124684 - r124658;
        double r124686 = 1.0;
        double r124687 = r124686 / r124655;
        double r124688 = r124685 / r124687;
        double r124689 = r124682 * r124688;
        double r124690 = r124665 ? r124681 : r124689;
        double r124691 = r124653 ? r124661 : r124690;
        return r124691;
}

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
Target43.0
Herbie19.2
\[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 i < -0.9131486383075667

    1. Initial program 28.1

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

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

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

    if -0.9131486383075667 < i < 0.10387405912847383

    1. Initial program 50.8

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

      \[\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. Simplified33.3

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

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

    if 0.10387405912847383 < i

    1. Initial program 32.5

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

      \[\leadsto 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\color{blue}{i \cdot \frac{1}{n}}}\]
    4. Applied *-un-lft-identity32.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-frac32.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*32.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. Simplified32.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le \frac{-4112455867215833}{4503599627370496}:\\ \;\;\;\;100 \cdot \frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\ \mathbf{elif}\;i \le \frac{3742457391875645}{36028797018963968}:\\ \;\;\;\;100 \cdot \left(\frac{\left(1 \cdot i + \left(\frac{1}{2} \cdot {i}^{2} + \log 1 \cdot n\right)\right) - \frac{1}{2} \cdot \left({i}^{2} \cdot \log 1\right)}{i} \cdot n\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{i} \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{1}{n}}\\ \end{array}\]

Reproduce

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