100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -2.4372743425058105193615005673548969949 \cdot 10^{-310}:\\
\;\;\;\;100 \cdot \frac{\frac{\frac{1}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{\frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(4 \cdot n\right)} - 1 \cdot {1}^{3}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}} \cdot n}}\\
\mathbf{elif}\;n \le 2.053192934454678974082105649395487884911 \cdot 10^{-111}:\\
\;\;\;\;100 \cdot \frac{\frac{1}{2} \cdot \left({\left(\log i\right)}^{2} \cdot {n}^{2} + {n}^{2} \cdot {\left(\log n\right)}^{2}\right) + \left(\left(\frac{1}{6} \cdot \left({\left(\log i\right)}^{3} \cdot {n}^{3}\right) + \left(\log i \cdot n + \frac{1}{2} \cdot \left(\log i \cdot \left({n}^{3} \cdot {\left(\log n\right)}^{2}\right)\right)\right)\right) - \left(\log n \cdot \left(\log i \cdot {n}^{2} + n\right) + \left(\frac{1}{2} \cdot \left({\left(\log i\right)}^{2} \cdot \left({n}^{3} \cdot \log n\right)\right) + \frac{1}{6} \cdot \left({n}^{3} \cdot {\left(\log n\right)}^{3}\right)\right)\right)\right)}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 3.682516545739370661841848796102550693335 \cdot 10^{-44}:\\
\;\;\;\;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 9.089128901802147835523691243773490781497 \cdot 10^{-18}:\\
\;\;\;\;50 \cdot \left(\frac{{n}^{3} \cdot {\left(\log n\right)}^{2}}{i} + \frac{{\left(\log i\right)}^{2} \cdot {n}^{3}}{i}\right) + \left(\left(16.66666666666666429819088079966604709625 \cdot \frac{{\left(\log i\right)}^{3} \cdot {n}^{4}}{i} + \left(100 \cdot \frac{\log i \cdot {n}^{2}}{i} + 50 \cdot \frac{\log i \cdot \left({n}^{4} \cdot {\left(\log n\right)}^{2}\right)}{i}\right)\right) - \left(16.66666666666666429819088079966604709625 \cdot \frac{{n}^{4} \cdot {\left(\log n\right)}^{3}}{i} + \left(100 \cdot \left(\frac{\log i \cdot \left({n}^{3} \cdot \log n\right)}{i} + \frac{{n}^{2} \cdot \log n}{i}\right) + 50 \cdot \frac{{\left(\log i\right)}^{2} \cdot \left({n}^{4} \cdot \log n\right)}{i}\right)\right)\right)\\
\mathbf{elif}\;n \le 2.128047119799741370168835622013045914305 \cdot 10^{177}:\\
\;\;\;\;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{else}:\\
\;\;\;\;100 \cdot \frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\
\end{array}double f(double i, double n) {
double r239372 = 100.0;
double r239373 = 1.0;
double r239374 = i;
double r239375 = n;
double r239376 = r239374 / r239375;
double r239377 = r239373 + r239376;
double r239378 = pow(r239377, r239375);
double r239379 = r239378 - r239373;
double r239380 = r239379 / r239376;
double r239381 = r239372 * r239380;
return r239381;
}
double f(double i, double n) {
double r239382 = n;
double r239383 = -2.4372743425058e-310;
bool r239384 = r239382 <= r239383;
double r239385 = 100.0;
double r239386 = 1.0;
double r239387 = 1.0;
double r239388 = i;
double r239389 = r239388 / r239382;
double r239390 = r239387 + r239389;
double r239391 = 2.0;
double r239392 = r239391 * r239382;
double r239393 = pow(r239390, r239392);
double r239394 = r239387 * r239387;
double r239395 = r239393 + r239394;
double r239396 = cbrt(r239395);
double r239397 = r239396 * r239396;
double r239398 = r239386 / r239397;
double r239399 = pow(r239390, r239382);
double r239400 = r239399 + r239387;
double r239401 = sqrt(r239400);
double r239402 = r239398 / r239401;
double r239403 = 4.0;
double r239404 = r239403 * r239382;
double r239405 = pow(r239390, r239404);
double r239406 = 3.0;
double r239407 = pow(r239387, r239406);
double r239408 = r239387 * r239407;
double r239409 = r239405 - r239408;
double r239410 = r239409 / r239396;
double r239411 = r239410 / r239401;
double r239412 = r239411 * r239382;
double r239413 = r239388 / r239412;
double r239414 = r239402 / r239413;
double r239415 = r239385 * r239414;
double r239416 = 2.053192934454679e-111;
bool r239417 = r239382 <= r239416;
double r239418 = 0.5;
double r239419 = log(r239388);
double r239420 = pow(r239419, r239391);
double r239421 = pow(r239382, r239391);
double r239422 = r239420 * r239421;
double r239423 = log(r239382);
double r239424 = pow(r239423, r239391);
double r239425 = r239421 * r239424;
double r239426 = r239422 + r239425;
double r239427 = r239418 * r239426;
double r239428 = 0.16666666666666666;
double r239429 = pow(r239419, r239406);
double r239430 = pow(r239382, r239406);
double r239431 = r239429 * r239430;
double r239432 = r239428 * r239431;
double r239433 = r239419 * r239382;
double r239434 = r239430 * r239424;
double r239435 = r239419 * r239434;
double r239436 = r239418 * r239435;
double r239437 = r239433 + r239436;
double r239438 = r239432 + r239437;
double r239439 = r239419 * r239421;
double r239440 = r239439 + r239382;
double r239441 = r239423 * r239440;
double r239442 = r239430 * r239423;
double r239443 = r239420 * r239442;
double r239444 = r239418 * r239443;
double r239445 = pow(r239423, r239406);
double r239446 = r239430 * r239445;
double r239447 = r239428 * r239446;
double r239448 = r239444 + r239447;
double r239449 = r239441 + r239448;
double r239450 = r239438 - r239449;
double r239451 = r239427 + r239450;
double r239452 = r239451 / r239389;
double r239453 = r239385 * r239452;
double r239454 = 3.6825165457393707e-44;
bool r239455 = r239382 <= r239454;
double r239456 = r239387 * r239388;
double r239457 = 0.5;
double r239458 = pow(r239388, r239391);
double r239459 = r239457 * r239458;
double r239460 = log(r239387);
double r239461 = r239460 * r239382;
double r239462 = r239459 + r239461;
double r239463 = r239456 + r239462;
double r239464 = r239458 * r239460;
double r239465 = r239457 * r239464;
double r239466 = r239463 - r239465;
double r239467 = r239466 / r239389;
double r239468 = r239385 * r239467;
double r239469 = 9.089128901802148e-18;
bool r239470 = r239382 <= r239469;
double r239471 = 50.0;
double r239472 = r239434 / r239388;
double r239473 = r239420 * r239430;
double r239474 = r239473 / r239388;
double r239475 = r239472 + r239474;
double r239476 = r239471 * r239475;
double r239477 = 16.666666666666664;
double r239478 = pow(r239382, r239403);
double r239479 = r239429 * r239478;
double r239480 = r239479 / r239388;
double r239481 = r239477 * r239480;
double r239482 = r239439 / r239388;
double r239483 = r239385 * r239482;
double r239484 = r239478 * r239424;
double r239485 = r239419 * r239484;
double r239486 = r239485 / r239388;
double r239487 = r239471 * r239486;
double r239488 = r239483 + r239487;
double r239489 = r239481 + r239488;
double r239490 = r239478 * r239445;
double r239491 = r239490 / r239388;
double r239492 = r239477 * r239491;
double r239493 = r239419 * r239442;
double r239494 = r239493 / r239388;
double r239495 = r239421 * r239423;
double r239496 = r239495 / r239388;
double r239497 = r239494 + r239496;
double r239498 = r239385 * r239497;
double r239499 = r239478 * r239423;
double r239500 = r239420 * r239499;
double r239501 = r239500 / r239388;
double r239502 = r239471 * r239501;
double r239503 = r239498 + r239502;
double r239504 = r239492 + r239503;
double r239505 = r239489 - r239504;
double r239506 = r239476 + r239505;
double r239507 = 2.1280471197997414e+177;
bool r239508 = r239382 <= r239507;
double r239509 = pow(r239389, r239382);
double r239510 = r239509 - r239387;
double r239511 = r239510 / r239389;
double r239512 = r239385 * r239511;
double r239513 = r239508 ? r239468 : r239512;
double r239514 = r239470 ? r239506 : r239513;
double r239515 = r239455 ? r239468 : r239514;
double r239516 = r239417 ? r239453 : r239515;
double r239517 = r239384 ? r239415 : r239516;
return r239517;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.5 |
|---|---|
| Target | 42.4 |
| Herbie | 30.1 |
if n < -2.4372743425058e-310Initial program 31.8
rmApplied flip--31.8
Simplified31.8
rmApplied flip--31.8
Simplified31.8
rmApplied add-sqr-sqrt31.8
Applied add-cube-cbrt31.8
Applied *-un-lft-identity31.8
Applied times-frac31.8
Applied times-frac31.8
Applied associate-/l*31.8
Simplified31.6
if -2.4372743425058e-310 < n < 2.053192934454679e-111Initial program 43.9
Taylor expanded around inf 26.9
Simplified44.3
Taylor expanded around 0 17.7
Simplified17.7
if 2.053192934454679e-111 < n < 3.6825165457393707e-44 or 9.089128901802148e-18 < n < 2.1280471197997414e+177Initial program 58.8
Taylor expanded around 0 25.0
if 3.6825165457393707e-44 < n < 9.089128901802148e-18Initial program 60.2
Taylor expanded around inf 57.9
Simplified60.8
Taylor expanded around 0 36.4
Simplified36.4
if 2.1280471197997414e+177 < n Initial program 61.9
Taylor expanded around inf 64.0
Simplified45.7
Final simplification30.1
herbie shell --seed 2019303
(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))))