Average Error: 48.0 → 17.6
Time: 12.6s
Precision: 64
\[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\]
\[\begin{array}{l} \mathbf{if}\;i \le -2.2717441078324636 \cdot 10^{-10}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)\\ \mathbf{elif}\;i \le 2.5704520336039343 \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 1.5471622621860444 \cdot 10^{204}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{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 -2.2717441078324636 \cdot 10^{-10}:\\
\;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)\\

\mathbf{elif}\;i \le 2.5704520336039343 \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 1.5471622621860444 \cdot 10^{204}:\\
\;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{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 r117196 = 100.0;
        double r117197 = 1.0;
        double r117198 = i;
        double r117199 = n;
        double r117200 = r117198 / r117199;
        double r117201 = r117197 + r117200;
        double r117202 = pow(r117201, r117199);
        double r117203 = r117202 - r117197;
        double r117204 = r117203 / r117200;
        double r117205 = r117196 * r117204;
        return r117205;
}

double f(double i, double n) {
        double r117206 = i;
        double r117207 = -2.2717441078324636e-10;
        bool r117208 = r117206 <= r117207;
        double r117209 = 100.0;
        double r117210 = 1.0;
        double r117211 = n;
        double r117212 = r117206 / r117211;
        double r117213 = r117210 + r117212;
        double r117214 = pow(r117213, r117211);
        double r117215 = r117214 / r117212;
        double r117216 = r117210 / r117212;
        double r117217 = r117215 - r117216;
        double r117218 = r117209 * r117217;
        double r117219 = 2.5704520336039343e-23;
        bool r117220 = r117206 <= r117219;
        double r117221 = r117210 * r117206;
        double r117222 = 0.5;
        double r117223 = 2.0;
        double r117224 = pow(r117206, r117223);
        double r117225 = r117222 * r117224;
        double r117226 = log(r117210);
        double r117227 = r117226 * r117211;
        double r117228 = r117225 + r117227;
        double r117229 = r117221 + r117228;
        double r117230 = r117224 * r117226;
        double r117231 = r117222 * r117230;
        double r117232 = r117229 - r117231;
        double r117233 = r117232 / r117206;
        double r117234 = r117209 * r117233;
        double r117235 = r117234 * r117211;
        double r117236 = 1.5471622621860444e+204;
        bool r117237 = r117206 <= r117236;
        double r117238 = 1.0;
        double r117239 = r117227 + r117238;
        double r117240 = r117221 + r117239;
        double r117241 = r117240 - r117210;
        double r117242 = r117241 / r117212;
        double r117243 = r117209 * r117242;
        double r117244 = r117237 ? r117218 : r117243;
        double r117245 = r117220 ? r117235 : r117244;
        double r117246 = r117208 ? r117218 : r117245;
        return r117246;
}

Error

Bits error versus i

Bits error versus n

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original48.0
Target48.1
Herbie17.6
\[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 < -2.2717441078324636e-10 or 2.5704520336039343e-23 < i < 1.5471622621860444e+204

    1. Initial program 31.5

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

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

    if -2.2717441078324636e-10 < i < 2.5704520336039343e-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.1

      \[\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.5

      \[\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.5

      \[\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 1.5471622621860444e+204 < i

    1. Initial program 33.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le -2.2717441078324636 \cdot 10^{-10}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)\\ \mathbf{elif}\;i \le 2.5704520336039343 \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 1.5471622621860444 \cdot 10^{204}:\\ \;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{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 2020065 
(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))))