100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -8.97495351037423816126988860777680675991 \cdot 10^{177}:\\
\;\;\;\;\left(100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i}\right) \cdot n\\
\mathbf{elif}\;n \le -36228113.1512196958065032958984375:\\
\;\;\;\;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)}{\frac{i}{n}}\\
\mathbf{elif}\;n \le -1.04145011309898066305251012619905231421 \cdot 10^{-294}:\\
\;\;\;\;100 \cdot \frac{\sqrt[3]{\frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}} \cdot \sqrt[3]{\frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{\sqrt[3]{\frac{1}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}} \cdot \frac{\frac{1}{n}}{\sqrt[3]{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} - 1 \cdot 1}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}}}\\
\mathbf{elif}\;n \le 1.496434530671250065211050155721986673116 \cdot 10^{-224}:\\
\;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 7.653944076549357751092870318001482628066 \cdot 10^{-198}:\\
\;\;\;\;100 \cdot \left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{n}{i}\right)\\
\mathbf{else}:\\
\;\;\;\;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)}{\frac{i}{n}}\\
\end{array}double f(double i, double n) {
double r1661355 = 100.0;
double r1661356 = 1.0;
double r1661357 = i;
double r1661358 = n;
double r1661359 = r1661357 / r1661358;
double r1661360 = r1661356 + r1661359;
double r1661361 = pow(r1661360, r1661358);
double r1661362 = r1661361 - r1661356;
double r1661363 = r1661362 / r1661359;
double r1661364 = r1661355 * r1661363;
return r1661364;
}
double f(double i, double n) {
double r1661365 = n;
double r1661366 = -8.974953510374238e+177;
bool r1661367 = r1661365 <= r1661366;
double r1661368 = 100.0;
double r1661369 = 1.0;
double r1661370 = i;
double r1661371 = r1661370 / r1661365;
double r1661372 = r1661369 + r1661371;
double r1661373 = pow(r1661372, r1661365);
double r1661374 = r1661373 - r1661369;
double r1661375 = r1661374 / r1661370;
double r1661376 = r1661368 * r1661375;
double r1661377 = r1661376 * r1661365;
double r1661378 = -36228113.151219696;
bool r1661379 = r1661365 <= r1661378;
double r1661380 = r1661369 * r1661370;
double r1661381 = 0.5;
double r1661382 = 2.0;
double r1661383 = pow(r1661370, r1661382);
double r1661384 = r1661381 * r1661383;
double r1661385 = log(r1661369);
double r1661386 = r1661385 * r1661365;
double r1661387 = r1661384 + r1661386;
double r1661388 = r1661380 + r1661387;
double r1661389 = r1661383 * r1661385;
double r1661390 = r1661381 * r1661389;
double r1661391 = r1661388 - r1661390;
double r1661392 = r1661391 / r1661371;
double r1661393 = r1661368 * r1661392;
double r1661394 = -1.0414501130989807e-294;
bool r1661395 = r1661365 <= r1661394;
double r1661396 = r1661382 * r1661365;
double r1661397 = r1661382 * r1661396;
double r1661398 = pow(r1661372, r1661397);
double r1661399 = r1661369 * r1661369;
double r1661400 = r1661399 * r1661399;
double r1661401 = -r1661400;
double r1661402 = r1661398 + r1661401;
double r1661403 = pow(r1661372, r1661396);
double r1661404 = r1661403 + r1661399;
double r1661405 = r1661402 / r1661404;
double r1661406 = r1661373 + r1661369;
double r1661407 = r1661405 / r1661406;
double r1661408 = cbrt(r1661407);
double r1661409 = r1661408 * r1661408;
double r1661410 = 1.0;
double r1661411 = sqrt(r1661406);
double r1661412 = r1661410 / r1661411;
double r1661413 = cbrt(r1661412);
double r1661414 = r1661370 / r1661413;
double r1661415 = r1661410 / r1661365;
double r1661416 = r1661403 - r1661399;
double r1661417 = r1661416 / r1661411;
double r1661418 = cbrt(r1661417);
double r1661419 = r1661415 / r1661418;
double r1661420 = r1661414 * r1661419;
double r1661421 = r1661409 / r1661420;
double r1661422 = r1661368 * r1661421;
double r1661423 = 1.49643453067125e-224;
bool r1661424 = r1661365 <= r1661423;
double r1661425 = r1661386 + r1661410;
double r1661426 = r1661380 + r1661425;
double r1661427 = r1661426 - r1661369;
double r1661428 = r1661427 / r1661371;
double r1661429 = r1661368 * r1661428;
double r1661430 = 7.653944076549358e-198;
bool r1661431 = r1661365 <= r1661430;
double r1661432 = r1661365 / r1661370;
double r1661433 = r1661374 * r1661432;
double r1661434 = r1661368 * r1661433;
double r1661435 = r1661431 ? r1661434 : r1661393;
double r1661436 = r1661424 ? r1661429 : r1661435;
double r1661437 = r1661395 ? r1661422 : r1661436;
double r1661438 = r1661379 ? r1661393 : r1661437;
double r1661439 = r1661367 ? r1661377 : r1661438;
return r1661439;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.9 |
|---|---|
| Target | 43.1 |
| Herbie | 32.7 |
if n < -8.974953510374238e+177Initial program 53.2
rmApplied associate-/r/52.7
Applied associate-*r*52.7
if -8.974953510374238e+177 < n < -36228113.151219696 or 7.653944076549358e-198 < n Initial program 52.0
Taylor expanded around 0 36.1
if -36228113.151219696 < n < -1.0414501130989807e-294Initial program 16.9
rmApplied flip--16.9
Simplified16.9
rmApplied flip-+16.9
Simplified16.8
Simplified16.8
rmApplied add-cube-cbrt16.8
Applied associate-/l*16.8
rmApplied add-sqr-sqrt16.8
Applied flip-+50.8
Applied associate-/r/50.8
Applied times-frac50.8
Applied cbrt-prod50.8
Applied div-inv50.8
Applied times-frac50.8
Simplified16.8
if -1.0414501130989807e-294 < n < 1.49643453067125e-224Initial program 33.7
Taylor expanded around 0 14.9
if 1.49643453067125e-224 < n < 7.653944076549358e-198Initial program 47.4
rmApplied div-inv47.4
Simplified47.4
Final simplification32.7
herbie shell --seed 2020001
(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))))