100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -0.2694860566002935:\\
\;\;\;\;100 \cdot \frac{{\left(\frac{i}{n}\right)}^{n} + -1}{\frac{i}{n}}\\
\mathbf{elif}\;i \le 1.0240148652191775 \cdot 10^{-13}:\\
\;\;\;\;n \cdot \left(100 + i \cdot \left(\frac{50}{3} \cdot i + 50\right)\right)\\
\mathbf{else}:\\
\;\;\;\;n \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i} \cdot 100\right)\\
\end{array}double f(double i, double n) {
double r39001342 = 100.0;
double r39001343 = 1.0;
double r39001344 = i;
double r39001345 = n;
double r39001346 = r39001344 / r39001345;
double r39001347 = r39001343 + r39001346;
double r39001348 = pow(r39001347, r39001345);
double r39001349 = r39001348 - r39001343;
double r39001350 = r39001349 / r39001346;
double r39001351 = r39001342 * r39001350;
return r39001351;
}
double f(double i, double n) {
double r39001352 = i;
double r39001353 = -0.2694860566002935;
bool r39001354 = r39001352 <= r39001353;
double r39001355 = 100.0;
double r39001356 = n;
double r39001357 = r39001352 / r39001356;
double r39001358 = pow(r39001357, r39001356);
double r39001359 = -1.0;
double r39001360 = r39001358 + r39001359;
double r39001361 = r39001360 / r39001357;
double r39001362 = r39001355 * r39001361;
double r39001363 = 1.0240148652191775e-13;
bool r39001364 = r39001352 <= r39001363;
double r39001365 = 16.666666666666668;
double r39001366 = r39001365 * r39001352;
double r39001367 = 50.0;
double r39001368 = r39001366 + r39001367;
double r39001369 = r39001352 * r39001368;
double r39001370 = r39001355 + r39001369;
double r39001371 = r39001356 * r39001370;
double r39001372 = 1.0;
double r39001373 = r39001372 + r39001357;
double r39001374 = pow(r39001373, r39001356);
double r39001375 = r39001374 - r39001372;
double r39001376 = r39001375 / r39001352;
double r39001377 = r39001376 * r39001355;
double r39001378 = r39001356 * r39001377;
double r39001379 = r39001364 ? r39001371 : r39001378;
double r39001380 = r39001354 ? r39001362 : r39001379;
return r39001380;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.8 |
|---|---|
| Target | 42.6 |
| Herbie | 19.0 |
if i < -0.2694860566002935Initial program 29.1
Taylor expanded around inf 62.9
Simplified18.4
if -0.2694860566002935 < i < 1.0240148652191775e-13Initial program 50.4
Taylor expanded around 0 32.0
Simplified32.0
Taylor expanded around 0 16.1
Simplified16.1
Taylor expanded around -inf 16.1
Simplified16.1
if 1.0240148652191775e-13 < i Initial program 31.8
rmApplied associate-/r/31.8
Applied associate-*r*31.8
Final simplification19.0
herbie shell --seed 2019119
(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))))