100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -0.67216965178613575:\\
\;\;\;\;100 \cdot \left(\frac{\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(-1 \cdot 1\right) \cdot \left(-1 \cdot 1\right)\right)} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(-1 \cdot 1\right) \cdot \left(-1 \cdot 1\right)\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{i} \cdot \frac{\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(-1 \cdot 1\right) \cdot \left(-1 \cdot 1\right)\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{1}{n}}\right)\\
\mathbf{elif}\;i \le 5.4848294551835708 \cdot 10^{145}:\\
\;\;\;\;100 \cdot \frac{\mathsf{fma}\left(i, 1, \mathsf{fma}\left(0.5, {i}^{2}, \log 1 \cdot n\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)\right)}{\frac{i}{n}}\\
\mathbf{elif}\;i \le 3.45170537215142098 \cdot 10^{222}:\\
\;\;\;\;100 \cdot \left(\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{i} \cdot \left(\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}} \cdot n\right)\right)\\
\mathbf{elif}\;i \le 2.74199199550633987 \cdot 10^{289}:\\
\;\;\;\;100 \cdot \frac{\frac{\frac{\mathsf{fma}\left(4, i, \mathsf{fma}\left(4, \log 1 \cdot n, 1\right)\right) + \left(-\left(-1 \cdot 1\right) \cdot \left(-1 \cdot 1\right)\right)}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;100 \cdot \left(\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{i} \cdot \left(\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}} \cdot n\right)\right)\\
\end{array}double f(double i, double n) {
double r284205 = 100.0;
double r284206 = 1.0;
double r284207 = i;
double r284208 = n;
double r284209 = r284207 / r284208;
double r284210 = r284206 + r284209;
double r284211 = pow(r284210, r284208);
double r284212 = r284211 - r284206;
double r284213 = r284212 / r284209;
double r284214 = r284205 * r284213;
return r284214;
}
double f(double i, double n) {
double r284215 = i;
double r284216 = -0.6721696517861357;
bool r284217 = r284215 <= r284216;
double r284218 = 100.0;
double r284219 = 1.0;
double r284220 = n;
double r284221 = r284215 / r284220;
double r284222 = r284219 + r284221;
double r284223 = 2.0;
double r284224 = r284223 * r284220;
double r284225 = r284223 * r284224;
double r284226 = pow(r284222, r284225);
double r284227 = r284219 * r284219;
double r284228 = -r284227;
double r284229 = r284228 * r284228;
double r284230 = -r284229;
double r284231 = r284226 + r284230;
double r284232 = cbrt(r284231);
double r284233 = r284232 * r284232;
double r284234 = pow(r284222, r284224);
double r284235 = r284234 + r284227;
double r284236 = sqrt(r284235);
double r284237 = r284233 / r284236;
double r284238 = pow(r284222, r284220);
double r284239 = r284238 + r284219;
double r284240 = cbrt(r284239);
double r284241 = r284240 * r284240;
double r284242 = r284237 / r284241;
double r284243 = r284242 / r284215;
double r284244 = r284232 / r284236;
double r284245 = r284244 / r284240;
double r284246 = 1.0;
double r284247 = r284246 / r284220;
double r284248 = r284245 / r284247;
double r284249 = r284243 * r284248;
double r284250 = r284218 * r284249;
double r284251 = 5.484829455183571e+145;
bool r284252 = r284215 <= r284251;
double r284253 = 0.5;
double r284254 = pow(r284215, r284223);
double r284255 = log(r284219);
double r284256 = r284255 * r284220;
double r284257 = fma(r284253, r284254, r284256);
double r284258 = r284254 * r284255;
double r284259 = r284253 * r284258;
double r284260 = r284257 - r284259;
double r284261 = fma(r284215, r284219, r284260);
double r284262 = r284261 / r284221;
double r284263 = r284218 * r284262;
double r284264 = 3.451705372151421e+222;
bool r284265 = r284215 <= r284264;
double r284266 = r284234 + r284228;
double r284267 = cbrt(r284266);
double r284268 = r284267 * r284267;
double r284269 = sqrt(r284239);
double r284270 = r284268 / r284269;
double r284271 = r284270 / r284215;
double r284272 = r284267 / r284269;
double r284273 = r284272 * r284220;
double r284274 = r284271 * r284273;
double r284275 = r284218 * r284274;
double r284276 = 2.74199199550634e+289;
bool r284277 = r284215 <= r284276;
double r284278 = 4.0;
double r284279 = 4.0;
double r284280 = fma(r284279, r284256, r284246);
double r284281 = fma(r284278, r284215, r284280);
double r284282 = r284281 + r284230;
double r284283 = r284282 / r284235;
double r284284 = r284283 / r284239;
double r284285 = r284284 / r284221;
double r284286 = r284218 * r284285;
double r284287 = r284277 ? r284286 : r284275;
double r284288 = r284265 ? r284275 : r284287;
double r284289 = r284252 ? r284263 : r284288;
double r284290 = r284217 ? r284250 : r284289;
return r284290;
}




Bits error versus i




Bits error versus n
| Original | 40.9 |
|---|---|
| Target | 41.1 |
| Herbie | 32.8 |
if i < -0.6721696517861357Initial program 27.5
rmApplied flip--27.5
Simplified27.4
rmApplied flip-+27.4
Simplified27.4
Simplified27.4
rmApplied div-inv27.4
Applied add-cube-cbrt27.4
Applied add-sqr-sqrt27.4
Applied add-cube-cbrt27.4
Applied times-frac27.4
Applied times-frac27.4
Applied times-frac27.9
if -0.6721696517861357 < i < 5.484829455183571e+145Initial program 47.1
Taylor expanded around 0 34.6
Simplified34.6
if 5.484829455183571e+145 < i < 3.451705372151421e+222 or 2.74199199550634e+289 < i Initial program 32.7
rmApplied flip--32.7
Simplified32.7
rmApplied div-inv32.7
Applied add-sqr-sqrt32.7
Applied add-cube-cbrt32.7
Applied times-frac32.8
Applied times-frac32.8
Simplified32.7
if 3.451705372151421e+222 < i < 2.74199199550634e+289Initial program 31.9
rmApplied flip--31.9
Simplified31.9
rmApplied flip-+31.9
Simplified31.8
Simplified31.8
Taylor expanded around 0 33.8
Simplified33.8
Final simplification32.8
herbie shell --seed 2020024 +o rules:numerics
(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))))