100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -3.97244482863566445 \cdot 10^{105}:\\
\;\;\;\;\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}\;n \le -8.48364346201296677 \cdot 10^{-263}:\\
\;\;\;\;100 \cdot \frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 2.91897266268395317 \cdot 10^{-204}:\\
\;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 1.6252547660245352 \cdot 10^{-162}:\\
\;\;\;\;100 \cdot \frac{\frac{{\left({\left(1 + \frac{i}{n}\right)}^{n}\right)}^{3} - {1}^{3}}{1 \cdot \left(1 + {\left(1 + \frac{i}{n}\right)}^{n}\right) + {\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)}}}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;\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\\
\end{array}double f(double i, double n) {
double r122380 = 100.0;
double r122381 = 1.0;
double r122382 = i;
double r122383 = n;
double r122384 = r122382 / r122383;
double r122385 = r122381 + r122384;
double r122386 = pow(r122385, r122383);
double r122387 = r122386 - r122381;
double r122388 = r122387 / r122384;
double r122389 = r122380 * r122388;
return r122389;
}
double f(double i, double n) {
double r122390 = n;
double r122391 = -3.9724448286356644e+105;
bool r122392 = r122390 <= r122391;
double r122393 = 100.0;
double r122394 = 1.0;
double r122395 = i;
double r122396 = r122394 * r122395;
double r122397 = 0.5;
double r122398 = 2.0;
double r122399 = pow(r122395, r122398);
double r122400 = r122397 * r122399;
double r122401 = log(r122394);
double r122402 = r122401 * r122390;
double r122403 = r122400 + r122402;
double r122404 = r122396 + r122403;
double r122405 = r122399 * r122401;
double r122406 = r122397 * r122405;
double r122407 = r122404 - r122406;
double r122408 = r122407 / r122395;
double r122409 = r122393 * r122408;
double r122410 = r122409 * r122390;
double r122411 = -8.483643462012967e-263;
bool r122412 = r122390 <= r122411;
double r122413 = r122395 / r122390;
double r122414 = r122394 + r122413;
double r122415 = r122398 * r122390;
double r122416 = pow(r122414, r122415);
double r122417 = r122394 * r122394;
double r122418 = -r122417;
double r122419 = r122416 + r122418;
double r122420 = pow(r122414, r122390);
double r122421 = r122420 + r122394;
double r122422 = r122419 / r122421;
double r122423 = r122422 / r122413;
double r122424 = r122393 * r122423;
double r122425 = 2.918972662683953e-204;
bool r122426 = r122390 <= r122425;
double r122427 = 1.0;
double r122428 = r122402 + r122427;
double r122429 = r122396 + r122428;
double r122430 = r122429 - r122394;
double r122431 = r122430 / r122413;
double r122432 = r122393 * r122431;
double r122433 = 1.6252547660245352e-162;
bool r122434 = r122390 <= r122433;
double r122435 = 3.0;
double r122436 = pow(r122420, r122435);
double r122437 = pow(r122394, r122435);
double r122438 = r122436 - r122437;
double r122439 = r122394 + r122420;
double r122440 = r122394 * r122439;
double r122441 = r122440 + r122416;
double r122442 = r122438 / r122441;
double r122443 = r122442 / r122413;
double r122444 = r122393 * r122443;
double r122445 = r122434 ? r122444 : r122410;
double r122446 = r122426 ? r122432 : r122445;
double r122447 = r122412 ? r122424 : r122446;
double r122448 = r122392 ? r122410 : r122447;
return r122448;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.5 |
|---|---|
| Target | 42.4 |
| Herbie | 22.6 |
if n < -3.9724448286356644e+105 or 1.6252547660245352e-162 < n Initial program 55.5
Taylor expanded around 0 40.0
rmApplied associate-/r/21.6
Applied associate-*r*21.6
if -3.9724448286356644e+105 < n < -8.483643462012967e-263Initial program 23.8
rmApplied flip--23.8
Simplified23.7
if -8.483643462012967e-263 < n < 2.918972662683953e-204Initial program 28.6
Taylor expanded around 0 17.1
if 2.918972662683953e-204 < n < 1.6252547660245352e-162Initial program 47.0
rmApplied flip3--47.0
Simplified47.0
Final simplification22.6
herbie shell --seed 2020039
(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))))