100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -5.5136808217910137 \cdot 10^{209}:\\
\;\;\;\;\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 -4.20006178668092851 \cdot 10^{124}:\\
\;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\
\mathbf{elif}\;n \le -1.98325517621712044:\\
\;\;\;\;\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 -3.081068569055166 \cdot 10^{-191}:\\
\;\;\;\;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 3.21498631270168259 \cdot 10^{-193}:\\
\;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\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 r118401 = 100.0;
double r118402 = 1.0;
double r118403 = i;
double r118404 = n;
double r118405 = r118403 / r118404;
double r118406 = r118402 + r118405;
double r118407 = pow(r118406, r118404);
double r118408 = r118407 - r118402;
double r118409 = r118408 / r118405;
double r118410 = r118401 * r118409;
return r118410;
}
double f(double i, double n) {
double r118411 = n;
double r118412 = -5.513680821791014e+209;
bool r118413 = r118411 <= r118412;
double r118414 = 100.0;
double r118415 = 1.0;
double r118416 = i;
double r118417 = r118415 * r118416;
double r118418 = 0.5;
double r118419 = 2.0;
double r118420 = pow(r118416, r118419);
double r118421 = r118418 * r118420;
double r118422 = log(r118415);
double r118423 = r118422 * r118411;
double r118424 = r118421 + r118423;
double r118425 = r118417 + r118424;
double r118426 = r118420 * r118422;
double r118427 = r118418 * r118426;
double r118428 = r118425 - r118427;
double r118429 = r118428 / r118416;
double r118430 = r118414 * r118429;
double r118431 = r118430 * r118411;
double r118432 = -4.2000617866809285e+124;
bool r118433 = r118411 <= r118432;
double r118434 = r118416 / r118411;
double r118435 = r118415 + r118434;
double r118436 = pow(r118435, r118411);
double r118437 = r118436 - r118415;
double r118438 = r118414 * r118437;
double r118439 = r118438 / r118434;
double r118440 = -1.9832551762171204;
bool r118441 = r118411 <= r118440;
double r118442 = -3.0810685690551663e-191;
bool r118443 = r118411 <= r118442;
double r118444 = r118419 * r118411;
double r118445 = pow(r118435, r118444);
double r118446 = r118415 * r118415;
double r118447 = -r118446;
double r118448 = r118445 + r118447;
double r118449 = r118436 + r118415;
double r118450 = r118448 / r118449;
double r118451 = r118450 / r118434;
double r118452 = r118414 * r118451;
double r118453 = 3.2149863127016826e-193;
bool r118454 = r118411 <= r118453;
double r118455 = 1.0;
double r118456 = r118423 + r118455;
double r118457 = r118417 + r118456;
double r118458 = r118457 - r118415;
double r118459 = r118458 / r118434;
double r118460 = r118414 * r118459;
double r118461 = r118454 ? r118460 : r118431;
double r118462 = r118443 ? r118452 : r118461;
double r118463 = r118441 ? r118431 : r118462;
double r118464 = r118433 ? r118439 : r118463;
double r118465 = r118413 ? r118431 : r118464;
return r118465;
}




Bits error versus i




Bits error versus n
Results
| Original | 43.2 |
|---|---|
| Target | 42.4 |
| Herbie | 23.8 |
if n < -5.513680821791014e+209 or -4.2000617866809285e+124 < n < -1.9832551762171204 or 3.2149863127016826e-193 < n Initial program 53.2
Taylor expanded around 0 38.3
rmApplied associate-/r/23.3
Applied associate-*r*23.3
if -5.513680821791014e+209 < n < -4.2000617866809285e+124Initial program 45.4
rmApplied associate-*r/45.4
if -1.9832551762171204 < n < -3.0810685690551663e-191Initial program 20.1
rmApplied flip--20.1
Simplified20.1
if -3.0810685690551663e-191 < n < 3.2149863127016826e-193Initial program 26.1
Taylor expanded around 0 17.7
Final simplification23.8
herbie shell --seed 2020036
(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))))