100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -5.4348495206706917 \cdot 10^{-14}:\\
\;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\
\mathbf{elif}\;i \le 8.303151281634838 \cdot 10^{-23}:\\
\;\;\;\;\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}\;i \le 2.17900980394269248 \cdot 10^{235}:\\
\;\;\;\;\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}\\
\mathbf{elif}\;i \le 2.7456861005967948 \cdot 10^{289}:\\
\;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;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}}\\
\end{array}double f(double i, double n) {
double r150380 = 100.0;
double r150381 = 1.0;
double r150382 = i;
double r150383 = n;
double r150384 = r150382 / r150383;
double r150385 = r150381 + r150384;
double r150386 = pow(r150385, r150383);
double r150387 = r150386 - r150381;
double r150388 = r150387 / r150384;
double r150389 = r150380 * r150388;
return r150389;
}
double f(double i, double n) {
double r150390 = i;
double r150391 = -5.434849520670692e-14;
bool r150392 = r150390 <= r150391;
double r150393 = 100.0;
double r150394 = 1.0;
double r150395 = n;
double r150396 = r150390 / r150395;
double r150397 = r150394 + r150396;
double r150398 = pow(r150397, r150395);
double r150399 = r150398 - r150394;
double r150400 = r150393 * r150399;
double r150401 = r150400 / r150396;
double r150402 = 8.303151281634838e-23;
bool r150403 = r150390 <= r150402;
double r150404 = r150394 * r150390;
double r150405 = 0.5;
double r150406 = 2.0;
double r150407 = pow(r150390, r150406);
double r150408 = r150405 * r150407;
double r150409 = log(r150394);
double r150410 = r150409 * r150395;
double r150411 = r150408 + r150410;
double r150412 = r150404 + r150411;
double r150413 = r150407 * r150409;
double r150414 = r150405 * r150413;
double r150415 = r150412 - r150414;
double r150416 = r150415 / r150390;
double r150417 = r150393 * r150416;
double r150418 = r150417 * r150395;
double r150419 = 2.1790098039426925e+235;
bool r150420 = r150390 <= r150419;
double r150421 = 2.745686100596795e+289;
bool r150422 = r150390 <= r150421;
double r150423 = 1.0;
double r150424 = r150410 + r150423;
double r150425 = r150404 + r150424;
double r150426 = r150425 - r150394;
double r150427 = r150426 / r150396;
double r150428 = r150393 * r150427;
double r150429 = r150406 * r150395;
double r150430 = pow(r150397, r150429);
double r150431 = r150394 * r150394;
double r150432 = -r150431;
double r150433 = r150430 + r150432;
double r150434 = r150398 + r150394;
double r150435 = r150433 / r150434;
double r150436 = r150435 / r150396;
double r150437 = r150393 * r150436;
double r150438 = r150422 ? r150428 : r150437;
double r150439 = r150420 ? r150401 : r150438;
double r150440 = r150403 ? r150418 : r150439;
double r150441 = r150392 ? r150401 : r150440;
return r150441;
}




Bits error versus i




Bits error versus n
Results
| Original | 47.7 |
|---|---|
| Target | 47.6 |
| Herbie | 18.1 |
if i < -5.434849520670692e-14 or 8.303151281634838e-23 < i < 2.1790098039426925e+235Initial program 31.4
rmApplied associate-*r/31.4
if -5.434849520670692e-14 < i < 8.303151281634838e-23Initial program 58.5
Taylor expanded around 0 26.6
rmApplied associate-/r/8.9
Applied associate-*r*8.9
if 2.1790098039426925e+235 < i < 2.745686100596795e+289Initial program 29.1
Taylor expanded around 0 35.9
if 2.745686100596795e+289 < i Initial program 35.5
rmApplied flip--35.4
Simplified35.4
Final simplification18.1
herbie shell --seed 2020047
(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))))