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

\mathbf{elif}\;i \le 0.1038740591284738334909576451536850072443:\\
\;\;\;\;100 \cdot \left(\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)}{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 r104285 = 100.0;
        double r104286 = 1.0;
        double r104287 = i;
        double r104288 = n;
        double r104289 = r104287 / r104288;
        double r104290 = r104286 + r104289;
        double r104291 = pow(r104290, r104288);
        double r104292 = r104291 - r104286;
        double r104293 = r104292 / r104289;
        double r104294 = r104285 * r104293;
        return r104294;
}

double f(double i, double n) {
        double r104295 = i;
        double r104296 = -0.9131486383075667;
        bool r104297 = r104295 <= r104296;
        double r104298 = 100.0;
        double r104299 = n;
        double r104300 = r104295 / r104299;
        double r104301 = pow(r104300, r104299);
        double r104302 = 1.0;
        double r104303 = r104301 - r104302;
        double r104304 = r104303 / r104300;
        double r104305 = r104298 * r104304;
        double r104306 = 0.10387405912847383;
        bool r104307 = r104295 <= r104306;
        double r104308 = r104302 * r104295;
        double r104309 = 0.5;
        double r104310 = 2.0;
        double r104311 = pow(r104295, r104310);
        double r104312 = r104309 * r104311;
        double r104313 = log(r104302);
        double r104314 = r104313 * r104299;
        double r104315 = r104312 + r104314;
        double r104316 = r104308 + r104315;
        double r104317 = r104311 * r104313;
        double r104318 = r104309 * r104317;
        double r104319 = r104316 - r104318;
        double r104320 = r104319 / r104295;
        double r104321 = r104320 * r104299;
        double r104322 = r104298 * r104321;
        double r104323 = r104298 / r104295;
        double r104324 = r104302 + r104300;
        double r104325 = pow(r104324, r104299);
        double r104326 = r104325 - r104302;
        double r104327 = 1.0;
        double r104328 = r104327 / r104299;
        double r104329 = r104326 / r104328;
        double r104330 = r104323 * r104329;
        double r104331 = r104307 ? r104322 : r104330;
        double r104332 = r104297 ? r104305 : r104331;
        return r104332;
}

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. Using strategy rm
    4. Applied associate-/r/16.4

      \[\leadsto 100 \cdot \color{blue}{\left(\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)}{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 -0.9131486383075666513065016260952688753605:\\ \;\;\;\;100 \cdot \frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\ \mathbf{elif}\;i \le 0.1038740591284738334909576451536850072443:\\ \;\;\;\;100 \cdot \left(\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)}{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))))