Average Error: 47.7 → 18.1
Time: 15.4s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;i \le -5.4348495206706917 \cdot 10^{-14}:\\ \;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\ \mathbf{elif}\;i \le 8.303151281634838 \cdot 10^{-23}:\\ \;\;\;\;\left(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)}{i}\right) \cdot n\\ \mathbf{elif}\;i \le 2.17900980394269248 \cdot 10^{235}:\\ \;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\ \mathbf{elif}\;i \le 2.7456861005967948 \cdot 10^{289}:\\ \;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}{{\left(1 + \frac{i}{n}\right)}^{n} + 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 -5.4348495206706917 \cdot 10^{-14}:\\
\;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\

\mathbf{elif}\;i \le 8.303151281634838 \cdot 10^{-23}:\\
\;\;\;\;\left(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)}{i}\right) \cdot n\\

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

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

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

\end{array}
double f(double i, double n) {
        double r150380 = 100.0;
        double r150381 = 1.0;
        double r150382 = i;
        double r150383 = n;
        double r150384 = r150382 / r150383;
        double r150385 = r150381 + r150384;
        double r150386 = pow(r150385, r150383);
        double r150387 = r150386 - r150381;
        double r150388 = r150387 / r150384;
        double r150389 = r150380 * r150388;
        return r150389;
}

double f(double i, double n) {
        double r150390 = i;
        double r150391 = -5.434849520670692e-14;
        bool r150392 = r150390 <= r150391;
        double r150393 = 100.0;
        double r150394 = 1.0;
        double r150395 = n;
        double r150396 = r150390 / r150395;
        double r150397 = r150394 + r150396;
        double r150398 = pow(r150397, r150395);
        double r150399 = r150398 - r150394;
        double r150400 = r150393 * r150399;
        double r150401 = r150400 / r150396;
        double r150402 = 8.303151281634838e-23;
        bool r150403 = r150390 <= r150402;
        double r150404 = r150394 * r150390;
        double r150405 = 0.5;
        double r150406 = 2.0;
        double r150407 = pow(r150390, r150406);
        double r150408 = r150405 * r150407;
        double r150409 = log(r150394);
        double r150410 = r150409 * r150395;
        double r150411 = r150408 + r150410;
        double r150412 = r150404 + r150411;
        double r150413 = r150407 * r150409;
        double r150414 = r150405 * r150413;
        double r150415 = r150412 - r150414;
        double r150416 = r150415 / r150390;
        double r150417 = r150393 * r150416;
        double r150418 = r150417 * r150395;
        double r150419 = 2.1790098039426925e+235;
        bool r150420 = r150390 <= r150419;
        double r150421 = 2.745686100596795e+289;
        bool r150422 = r150390 <= r150421;
        double r150423 = 1.0;
        double r150424 = r150410 + r150423;
        double r150425 = r150404 + r150424;
        double r150426 = r150425 - r150394;
        double r150427 = r150426 / r150396;
        double r150428 = r150393 * r150427;
        double r150429 = r150406 * r150395;
        double r150430 = pow(r150397, r150429);
        double r150431 = r150394 * r150394;
        double r150432 = -r150431;
        double r150433 = r150430 + r150432;
        double r150434 = r150398 + r150394;
        double r150435 = r150433 / r150434;
        double r150436 = r150435 / r150396;
        double r150437 = r150393 * r150436;
        double r150438 = r150422 ? r150428 : r150437;
        double r150439 = r150420 ? r150401 : r150438;
        double r150440 = r150403 ? r150418 : r150439;
        double r150441 = r150392 ? r150401 : r150440;
        return r150441;
}

Error

Bits error versus i

Bits error versus n

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original47.7
Target47.6
Herbie18.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 4 regimes
  2. if i < -5.434849520670692e-14 or 8.303151281634838e-23 < i < 2.1790098039426925e+235

    1. Initial program 31.4

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

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

    if -5.434849520670692e-14 < i < 8.303151281634838e-23

    1. Initial program 58.5

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

      \[\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/8.9

      \[\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)}\]
    5. Applied associate-*r*8.9

      \[\leadsto \color{blue}{\left(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)}{i}\right) \cdot n}\]

    if 2.1790098039426925e+235 < i < 2.745686100596795e+289

    1. Initial program 29.1

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

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

    if 2.745686100596795e+289 < i

    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 flip--35.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le -5.4348495206706917 \cdot 10^{-14}:\\ \;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\ \mathbf{elif}\;i \le 8.303151281634838 \cdot 10^{-23}:\\ \;\;\;\;\left(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)}{i}\right) \cdot n\\ \mathbf{elif}\;i \le 2.17900980394269248 \cdot 10^{235}:\\ \;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\ \mathbf{elif}\;i \le 2.7456861005967948 \cdot 10^{289}:\\ \;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\ \end{array}\]

Reproduce

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