100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -2.260823056891884243812192182030091462802 \cdot 10^{130}:\\
\;\;\;\;\left(100 \cdot \frac{i \cdot \left(1 + 0.5 \cdot i\right) + \log 1 \cdot \left(n - 0.5 \cdot {i}^{2}\right)}{i}\right) \cdot n\\
\mathbf{elif}\;n \le -4.971792173734567753657378996256742049344 \cdot 10^{92}:\\
\;\;\;\;\frac{\left(100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)\right) \cdot n}{i}\\
\mathbf{elif}\;n \le -3.460770537187881137122290954175863408168 \cdot 10^{79} \lor \neg \left(n \le 6.434758453518077622758166934880438333831 \cdot 10^{-141}\right):\\
\;\;\;\;\left(100 \cdot \frac{i \cdot \left(1 + 0.5 \cdot i\right) + \log 1 \cdot \left(n - 0.5 \cdot {i}^{2}\right)}{i}\right) \cdot n\\
\mathbf{else}:\\
\;\;\;\;100 \cdot \frac{\log \left(e^{{\left(1 + \frac{i}{n}\right)}^{n} - 1}\right)}{\frac{i}{n}}\\
\end{array}double f(double i, double n) {
double r240364 = 100.0;
double r240365 = 1.0;
double r240366 = i;
double r240367 = n;
double r240368 = r240366 / r240367;
double r240369 = r240365 + r240368;
double r240370 = pow(r240369, r240367);
double r240371 = r240370 - r240365;
double r240372 = r240371 / r240368;
double r240373 = r240364 * r240372;
return r240373;
}
double f(double i, double n) {
double r240374 = n;
double r240375 = -2.260823056891884e+130;
bool r240376 = r240374 <= r240375;
double r240377 = 100.0;
double r240378 = i;
double r240379 = 1.0;
double r240380 = 0.5;
double r240381 = r240380 * r240378;
double r240382 = r240379 + r240381;
double r240383 = r240378 * r240382;
double r240384 = log(r240379);
double r240385 = 2.0;
double r240386 = pow(r240378, r240385);
double r240387 = r240380 * r240386;
double r240388 = r240374 - r240387;
double r240389 = r240384 * r240388;
double r240390 = r240383 + r240389;
double r240391 = r240390 / r240378;
double r240392 = r240377 * r240391;
double r240393 = r240392 * r240374;
double r240394 = -4.971792173734568e+92;
bool r240395 = r240374 <= r240394;
double r240396 = r240378 / r240374;
double r240397 = r240379 + r240396;
double r240398 = pow(r240397, r240374);
double r240399 = r240398 - r240379;
double r240400 = r240377 * r240399;
double r240401 = r240400 * r240374;
double r240402 = r240401 / r240378;
double r240403 = -3.460770537187881e+79;
bool r240404 = r240374 <= r240403;
double r240405 = 6.434758453518078e-141;
bool r240406 = r240374 <= r240405;
double r240407 = !r240406;
bool r240408 = r240404 || r240407;
double r240409 = exp(r240399);
double r240410 = log(r240409);
double r240411 = r240410 / r240396;
double r240412 = r240377 * r240411;
double r240413 = r240408 ? r240393 : r240412;
double r240414 = r240395 ? r240402 : r240413;
double r240415 = r240376 ? r240393 : r240414;
return r240415;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.2 |
|---|---|
| Target | 42.3 |
| Herbie | 24.2 |
if n < -2.260823056891884e+130 or -4.971792173734568e+92 < n < -3.460770537187881e+79 or 6.434758453518078e-141 < n Initial program 55.8
rmApplied associate-/r/55.4
Applied associate-*r*55.4
Taylor expanded around 0 21.1
Simplified21.1
if -2.260823056891884e+130 < n < -4.971792173734568e+92Initial program 38.6
rmApplied associate-/r/38.4
Applied associate-*r*38.3
rmApplied associate-*r/38.3
Applied associate-*l/38.3
if -3.460770537187881e+79 < n < 6.434758453518078e-141Initial program 26.5
rmApplied add-log-exp26.5
Applied add-log-exp26.5
Applied diff-log26.5
Simplified26.5
Final simplification24.2
herbie shell --seed 2019350
(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))))