Average Error: 42.5 → 22.2
Time: 30.4s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;n \le -1.3884805748006013 \cdot 10^{+188}:\\ \;\;\;\;100 \cdot \left(n + \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right) \cdot n\right)\\ \mathbf{elif}\;n \le -2.0828329080055055 \cdot 10^{+53}:\\ \;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\ \mathbf{elif}\;n \le -4.3338040301615885:\\ \;\;\;\;100 \cdot \left(n + \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right) \cdot n\right)\\ \mathbf{elif}\;n \le 3.8315021415526975 \cdot 10^{-122}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \left(n + \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right) \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.3884805748006013 \cdot 10^{+188}:\\
\;\;\;\;100 \cdot \left(n + \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right) \cdot n\right)\\

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

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

\mathbf{elif}\;n \le 3.8315021415526975 \cdot 10^{-122}:\\
\;\;\;\;0\\

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

\end{array}
double f(double i, double n) {
        double r5570929 = 100.0;
        double r5570930 = 1.0;
        double r5570931 = i;
        double r5570932 = n;
        double r5570933 = r5570931 / r5570932;
        double r5570934 = r5570930 + r5570933;
        double r5570935 = pow(r5570934, r5570932);
        double r5570936 = r5570935 - r5570930;
        double r5570937 = r5570936 / r5570933;
        double r5570938 = r5570929 * r5570937;
        return r5570938;
}

double f(double i, double n) {
        double r5570939 = n;
        double r5570940 = -1.3884805748006013e+188;
        bool r5570941 = r5570939 <= r5570940;
        double r5570942 = 100.0;
        double r5570943 = i;
        double r5570944 = 0.5;
        double r5570945 = 0.16666666666666666;
        double r5570946 = r5570945 * r5570943;
        double r5570947 = r5570944 + r5570946;
        double r5570948 = r5570943 * r5570947;
        double r5570949 = r5570948 * r5570939;
        double r5570950 = r5570939 + r5570949;
        double r5570951 = r5570942 * r5570950;
        double r5570952 = -2.0828329080055055e+53;
        bool r5570953 = r5570939 <= r5570952;
        double r5570954 = 1.0;
        double r5570955 = r5570943 / r5570939;
        double r5570956 = r5570954 + r5570955;
        double r5570957 = pow(r5570956, r5570939);
        double r5570958 = r5570957 - r5570954;
        double r5570959 = r5570942 * r5570958;
        double r5570960 = r5570959 / r5570955;
        double r5570961 = -4.3338040301615885;
        bool r5570962 = r5570939 <= r5570961;
        double r5570963 = 3.8315021415526975e-122;
        bool r5570964 = r5570939 <= r5570963;
        double r5570965 = 0.0;
        double r5570966 = r5570964 ? r5570965 : r5570951;
        double r5570967 = r5570962 ? r5570951 : r5570966;
        double r5570968 = r5570953 ? r5570960 : r5570967;
        double r5570969 = r5570941 ? r5570951 : r5570968;
        return r5570969;
}

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.0
Herbie22.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 n < -1.3884805748006013e+188 or -2.0828329080055055e+53 < n < -4.3338040301615885 or 3.8315021415526975e-122 < n

    1. Initial program 55.5

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

      \[\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. Simplified36.9

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

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

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

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

    if -1.3884805748006013e+188 < n < -2.0828329080055055e+53

    1. Initial program 39.5

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

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

    if -4.3338040301615885 < n < 3.8315021415526975e-122

    1. Initial program 25.3

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;n \le -1.3884805748006013 \cdot 10^{+188}:\\ \;\;\;\;100 \cdot \left(n + \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right) \cdot n\right)\\ \mathbf{elif}\;n \le -2.0828329080055055 \cdot 10^{+53}:\\ \;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\ \mathbf{elif}\;n \le -4.3338040301615885:\\ \;\;\;\;100 \cdot \left(n + \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right) \cdot n\right)\\ \mathbf{elif}\;n \le 3.8315021415526975 \cdot 10^{-122}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \left(n + \left(i \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot i\right)\right) \cdot n\right)\\ \end{array}\]

Reproduce

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