100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -1.3875157595860486 \cdot 10^{+126}:\\
\;\;\;\;\left(\left(n \cdot \left(\left(\sqrt[3]{\frac{1}{6}} \cdot i\right) \cdot \left(\sqrt[3]{\frac{1}{6}} \cdot i\right)\right)\right) \cdot \sqrt[3]{\frac{1}{6}} + \left(\left(\frac{1}{2} \cdot i\right) \cdot n + n\right)\right) \cdot 100\\
\mathbf{elif}\;n \le -1.7911077630361746 \cdot 10^{+47}:\\
\;\;\;\;\left(\sqrt[3]{\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{i}{n}}} \cdot \left(\sqrt[3]{\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{i}{n}}} \cdot \sqrt[3]{\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{i}{n}}}\right) - \frac{1}{\frac{i}{n}}\right) \cdot 100\\
\mathbf{elif}\;n \le -9.669625897906558 \cdot 10^{+22}:\\
\;\;\;\;\left(\left(n \cdot \left(\left(\sqrt[3]{\frac{1}{6}} \cdot i\right) \cdot \left(\sqrt[3]{\frac{1}{6}} \cdot i\right)\right)\right) \cdot \sqrt[3]{\frac{1}{6}} + \left(\left(\frac{1}{2} \cdot i\right) \cdot n + n\right)\right) \cdot 100\\
\mathbf{elif}\;n \le -5.9286511822489366 \cdot 10^{-49}:\\
\;\;\;\;100 \cdot \left(\left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{i} - \frac{1}{i}\right) \cdot n\right)\\
\mathbf{elif}\;n \le 9.575664251285104 \cdot 10^{-135}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;\left(\left(n \cdot \left(\left(\sqrt[3]{\frac{1}{6}} \cdot i\right) \cdot \left(\sqrt[3]{\frac{1}{6}} \cdot i\right)\right)\right) \cdot \sqrt[3]{\frac{1}{6}} + \left(\left(\frac{1}{2} \cdot i\right) \cdot n + n\right)\right) \cdot 100\\
\end{array}double f(double i, double n) {
double r4554354 = 100.0;
double r4554355 = 1.0;
double r4554356 = i;
double r4554357 = n;
double r4554358 = r4554356 / r4554357;
double r4554359 = r4554355 + r4554358;
double r4554360 = pow(r4554359, r4554357);
double r4554361 = r4554360 - r4554355;
double r4554362 = r4554361 / r4554358;
double r4554363 = r4554354 * r4554362;
return r4554363;
}
double f(double i, double n) {
double r4554364 = n;
double r4554365 = -1.3875157595860486e+126;
bool r4554366 = r4554364 <= r4554365;
double r4554367 = 0.16666666666666666;
double r4554368 = cbrt(r4554367);
double r4554369 = i;
double r4554370 = r4554368 * r4554369;
double r4554371 = r4554370 * r4554370;
double r4554372 = r4554364 * r4554371;
double r4554373 = r4554372 * r4554368;
double r4554374 = 0.5;
double r4554375 = r4554374 * r4554369;
double r4554376 = r4554375 * r4554364;
double r4554377 = r4554376 + r4554364;
double r4554378 = r4554373 + r4554377;
double r4554379 = 100.0;
double r4554380 = r4554378 * r4554379;
double r4554381 = -1.7911077630361746e+47;
bool r4554382 = r4554364 <= r4554381;
double r4554383 = r4554369 / r4554364;
double r4554384 = 1.0;
double r4554385 = r4554383 + r4554384;
double r4554386 = pow(r4554385, r4554364);
double r4554387 = r4554386 / r4554383;
double r4554388 = cbrt(r4554387);
double r4554389 = r4554388 * r4554388;
double r4554390 = r4554388 * r4554389;
double r4554391 = r4554384 / r4554383;
double r4554392 = r4554390 - r4554391;
double r4554393 = r4554392 * r4554379;
double r4554394 = -9.669625897906558e+22;
bool r4554395 = r4554364 <= r4554394;
double r4554396 = -5.9286511822489366e-49;
bool r4554397 = r4554364 <= r4554396;
double r4554398 = r4554386 / r4554369;
double r4554399 = r4554384 / r4554369;
double r4554400 = r4554398 - r4554399;
double r4554401 = r4554400 * r4554364;
double r4554402 = r4554379 * r4554401;
double r4554403 = 9.575664251285104e-135;
bool r4554404 = r4554364 <= r4554403;
double r4554405 = 0.0;
double r4554406 = r4554404 ? r4554405 : r4554380;
double r4554407 = r4554397 ? r4554402 : r4554406;
double r4554408 = r4554395 ? r4554380 : r4554407;
double r4554409 = r4554382 ? r4554393 : r4554408;
double r4554410 = r4554366 ? r4554380 : r4554409;
return r4554410;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.5 |
|---|---|
| Target | 41.8 |
| Herbie | 21.9 |
if n < -1.3875157595860486e+126 or -1.7911077630361746e+47 < n < -9.669625897906558e+22 or 9.575664251285104e-135 < n Initial program 54.8
rmApplied div-sub54.8
Taylor expanded around 0 21.2
Simplified21.2
rmApplied add-cube-cbrt21.2
Applied associate-*r*21.2
Simplified21.2
if -1.3875157595860486e+126 < n < -1.7911077630361746e+47Initial program 38.6
rmApplied div-sub38.6
rmApplied add-cube-cbrt38.4
if -9.669625897906558e+22 < n < -5.9286511822489366e-49Initial program 24.5
rmApplied div-sub24.6
rmApplied associate-/r/33.6
Applied associate-/r/25.0
Applied distribute-rgt-out--25.0
if -5.9286511822489366e-49 < n < 9.575664251285104e-135Initial program 25.6
rmApplied associate-*r/25.6
Taylor expanded around 0 17.7
Final simplification21.9
herbie shell --seed 2019143
(FPCore (i n)
:name "Compound Interest"
: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))))