100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -3.094835530129789 \cdot 10^{+133}:\\
\;\;\;\;100 \cdot \left(n \cdot \frac{i + \left(\log \left(\sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}} \cdot \sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}}\right) + \log \left(\sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}}\right)\right)}{i}\right)\\
\mathbf{elif}\;n \le -3.866080760544941 \cdot 10^{+49}:\\
\;\;\;\;\left(\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{i} \cdot 100\right) \cdot n\\
\mathbf{elif}\;n \le -1.4249003372371525:\\
\;\;\;\;100 \cdot \left(n \cdot \frac{i + \left(\log \left(\sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}} \cdot \sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}}\right) + \log \left(\sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}}\right)\right)}{i}\right)\\
\mathbf{elif}\;n \le 3.760450716247655 \cdot 10^{-168}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;100 \cdot \left(n \cdot \frac{i + \left(\log \left(\sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}} \cdot \sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}}\right) + \log \left(\sqrt[3]{e^{i \cdot \left(i \cdot \left(\frac{1}{2} + i \cdot \frac{1}{6}\right)\right)}}\right)\right)}{i}\right)\\
\end{array}double f(double i, double n) {
double r3583466 = 100.0;
double r3583467 = 1.0;
double r3583468 = i;
double r3583469 = n;
double r3583470 = r3583468 / r3583469;
double r3583471 = r3583467 + r3583470;
double r3583472 = pow(r3583471, r3583469);
double r3583473 = r3583472 - r3583467;
double r3583474 = r3583473 / r3583470;
double r3583475 = r3583466 * r3583474;
return r3583475;
}
double f(double i, double n) {
double r3583476 = n;
double r3583477 = -3.094835530129789e+133;
bool r3583478 = r3583476 <= r3583477;
double r3583479 = 100.0;
double r3583480 = i;
double r3583481 = 0.5;
double r3583482 = 0.16666666666666666;
double r3583483 = r3583480 * r3583482;
double r3583484 = r3583481 + r3583483;
double r3583485 = r3583480 * r3583484;
double r3583486 = r3583480 * r3583485;
double r3583487 = exp(r3583486);
double r3583488 = cbrt(r3583487);
double r3583489 = r3583488 * r3583488;
double r3583490 = log(r3583489);
double r3583491 = log(r3583488);
double r3583492 = r3583490 + r3583491;
double r3583493 = r3583480 + r3583492;
double r3583494 = r3583493 / r3583480;
double r3583495 = r3583476 * r3583494;
double r3583496 = r3583479 * r3583495;
double r3583497 = -3.866080760544941e+49;
bool r3583498 = r3583476 <= r3583497;
double r3583499 = r3583480 / r3583476;
double r3583500 = 1.0;
double r3583501 = r3583499 + r3583500;
double r3583502 = pow(r3583501, r3583476);
double r3583503 = r3583502 - r3583500;
double r3583504 = r3583503 / r3583480;
double r3583505 = r3583504 * r3583479;
double r3583506 = r3583505 * r3583476;
double r3583507 = -1.4249003372371525;
bool r3583508 = r3583476 <= r3583507;
double r3583509 = 3.760450716247655e-168;
bool r3583510 = r3583476 <= r3583509;
double r3583511 = 0.0;
double r3583512 = r3583510 ? r3583511 : r3583496;
double r3583513 = r3583508 ? r3583496 : r3583512;
double r3583514 = r3583498 ? r3583506 : r3583513;
double r3583515 = r3583478 ? r3583496 : r3583514;
return r3583515;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.9 |
|---|---|
| Target | 42.2 |
| Herbie | 21.9 |
if n < -3.094835530129789e+133 or -3.866080760544941e+49 < n < -1.4249003372371525 or 3.760450716247655e-168 < n Initial program 54.0
Taylor expanded around 0 37.5
Simplified37.5
rmApplied associate-/r/21.7
rmApplied add-log-exp21.9
Applied add-log-exp22.2
Applied sum-log22.2
Simplified22.0
rmApplied add-cube-cbrt22.0
Applied log-prod22.0
if -3.094835530129789e+133 < n < -3.866080760544941e+49Initial program 37.5
rmApplied associate-/r/37.3
Applied associate-*r*37.3
if -1.4249003372371525 < n < 3.760450716247655e-168Initial program 23.6
Taylor expanded around 0 17.4
Final simplification21.9
herbie shell --seed 2019146
(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))))