100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -0.008529206764181104793998144941724603995681:\\
\;\;\;\;\frac{100}{i} \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{1}{n}}\\
\mathbf{elif}\;i \le 4.039962480132392563803023222135379910469:\\
\;\;\;\;100 \cdot \left(\frac{\mathsf{fma}\left(\log 1, n, \mathsf{fma}\left(1, i, \left(i \cdot i\right) \cdot 0.5\right)\right) - \left(\left(i \cdot i\right) \cdot \log 1\right) \cdot 0.5}{i} \cdot n\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{100}{i} \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{1}{n}}\\
\end{array}double f(double i, double n) {
double r9543179 = 100.0;
double r9543180 = 1.0;
double r9543181 = i;
double r9543182 = n;
double r9543183 = r9543181 / r9543182;
double r9543184 = r9543180 + r9543183;
double r9543185 = pow(r9543184, r9543182);
double r9543186 = r9543185 - r9543180;
double r9543187 = r9543186 / r9543183;
double r9543188 = r9543179 * r9543187;
return r9543188;
}
double f(double i, double n) {
double r9543189 = i;
double r9543190 = -0.008529206764181105;
bool r9543191 = r9543189 <= r9543190;
double r9543192 = 100.0;
double r9543193 = r9543192 / r9543189;
double r9543194 = 1.0;
double r9543195 = n;
double r9543196 = r9543189 / r9543195;
double r9543197 = r9543194 + r9543196;
double r9543198 = pow(r9543197, r9543195);
double r9543199 = r9543198 - r9543194;
double r9543200 = 1.0;
double r9543201 = r9543200 / r9543195;
double r9543202 = r9543199 / r9543201;
double r9543203 = r9543193 * r9543202;
double r9543204 = 4.039962480132393;
bool r9543205 = r9543189 <= r9543204;
double r9543206 = log(r9543194);
double r9543207 = r9543189 * r9543189;
double r9543208 = 0.5;
double r9543209 = r9543207 * r9543208;
double r9543210 = fma(r9543194, r9543189, r9543209);
double r9543211 = fma(r9543206, r9543195, r9543210);
double r9543212 = r9543207 * r9543206;
double r9543213 = r9543212 * r9543208;
double r9543214 = r9543211 - r9543213;
double r9543215 = r9543214 / r9543189;
double r9543216 = r9543215 * r9543195;
double r9543217 = r9543192 * r9543216;
double r9543218 = r9543205 ? r9543217 : r9543203;
double r9543219 = r9543191 ? r9543203 : r9543218;
return r9543219;
}




Bits error versus i




Bits error versus n
| Original | 43.1 |
|---|---|
| Target | 42.9 |
| Herbie | 21.7 |
if i < -0.008529206764181105 or 4.039962480132393 < i Initial program 30.1
rmApplied div-inv30.1
Applied *-un-lft-identity30.1
Applied times-frac30.6
Applied associate-*r*30.6
Simplified30.6
if -0.008529206764181105 < i < 4.039962480132393Initial program 50.8
Taylor expanded around 0 33.6
Simplified33.6
rmApplied associate-/r/16.4
Final simplification21.7
herbie shell --seed 2019174 +o rules:numerics
(FPCore (i n)
:name "Compound Interest"
:herbie-target
(* 100.0 (/ (- (exp (* n (if (== (+ 1.0 (/ i n)) 1.0) (/ i n) (/ (* (/ i n) (log (+ 1.0 (/ i n)))) (- (+ (/ i n) 1.0) 1.0))))) 1.0) (/ i n)))
(* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n))))