100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -2.4372743425058105193615005673548969949 \cdot 10^{-310}:\\
\;\;\;\;100 \cdot \frac{\frac{\frac{1}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{\frac{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(4 \cdot n\right)} - 1 \cdot {1}^{3}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}} \cdot n}}\\
\mathbf{elif}\;n \le 2.053192934454678974082105649395487884911 \cdot 10^{-111}:\\
\;\;\;\;100 \cdot \frac{\frac{1}{2} \cdot \left({\left(\log i\right)}^{2} \cdot {n}^{2} + {n}^{2} \cdot {\left(\log n\right)}^{2}\right) + \left(\left(\frac{1}{6} \cdot \left({\left(\log i\right)}^{3} \cdot {n}^{3}\right) + \left(\log i \cdot n + \frac{1}{2} \cdot \left(\log i \cdot \left({n}^{3} \cdot {\left(\log n\right)}^{2}\right)\right)\right)\right) - \left(\log n \cdot \left(\log i \cdot {n}^{2} + n\right) + \left(\frac{1}{2} \cdot \left({\left(\log i\right)}^{2} \cdot \left({n}^{3} \cdot \log n\right)\right) + \frac{1}{6} \cdot \left({n}^{3} \cdot {\left(\log n\right)}^{3}\right)\right)\right)\right)}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 3.682516545739370661841848796102550693335 \cdot 10^{-44}:\\
\;\;\;\;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)}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 9.089128901802147835523691243773490781497 \cdot 10^{-18}:\\
\;\;\;\;50 \cdot \left(\frac{{n}^{3} \cdot {\left(\log n\right)}^{2}}{i} + \frac{{\left(\log i\right)}^{2} \cdot {n}^{3}}{i}\right) + \left(\left(16.66666666666666429819088079966604709625 \cdot \frac{{\left(\log i\right)}^{3} \cdot {n}^{4}}{i} + \left(100 \cdot \frac{\log i \cdot {n}^{2}}{i} + 50 \cdot \frac{\log i \cdot \left({n}^{4} \cdot {\left(\log n\right)}^{2}\right)}{i}\right)\right) - \left(16.66666666666666429819088079966604709625 \cdot \frac{{n}^{4} \cdot {\left(\log n\right)}^{3}}{i} + \left(100 \cdot \left(\frac{\log i \cdot \left({n}^{3} \cdot \log n\right)}{i} + \frac{{n}^{2} \cdot \log n}{i}\right) + 50 \cdot \frac{{\left(\log i\right)}^{2} \cdot \left({n}^{4} \cdot \log n\right)}{i}\right)\right)\right)\\
\mathbf{elif}\;n \le 2.128047119799741370168835622013045914305 \cdot 10^{177}:\\
\;\;\;\;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)}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;\left(100 \cdot \sqrt{\frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}}\right) \cdot \sqrt{\frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}}\\
\end{array}double f(double i, double n) {
double r239186 = 100.0;
double r239187 = 1.0;
double r239188 = i;
double r239189 = n;
double r239190 = r239188 / r239189;
double r239191 = r239187 + r239190;
double r239192 = pow(r239191, r239189);
double r239193 = r239192 - r239187;
double r239194 = r239193 / r239190;
double r239195 = r239186 * r239194;
return r239195;
}
double f(double i, double n) {
double r239196 = n;
double r239197 = -2.4372743425058e-310;
bool r239198 = r239196 <= r239197;
double r239199 = 100.0;
double r239200 = 1.0;
double r239201 = 1.0;
double r239202 = i;
double r239203 = r239202 / r239196;
double r239204 = r239201 + r239203;
double r239205 = 2.0;
double r239206 = r239205 * r239196;
double r239207 = pow(r239204, r239206);
double r239208 = r239201 * r239201;
double r239209 = r239207 + r239208;
double r239210 = cbrt(r239209);
double r239211 = r239210 * r239210;
double r239212 = r239200 / r239211;
double r239213 = pow(r239204, r239196);
double r239214 = r239213 + r239201;
double r239215 = sqrt(r239214);
double r239216 = r239212 / r239215;
double r239217 = 4.0;
double r239218 = r239217 * r239196;
double r239219 = pow(r239204, r239218);
double r239220 = 3.0;
double r239221 = pow(r239201, r239220);
double r239222 = r239201 * r239221;
double r239223 = r239219 - r239222;
double r239224 = r239223 / r239210;
double r239225 = r239224 / r239215;
double r239226 = r239225 * r239196;
double r239227 = r239202 / r239226;
double r239228 = r239216 / r239227;
double r239229 = r239199 * r239228;
double r239230 = 2.053192934454679e-111;
bool r239231 = r239196 <= r239230;
double r239232 = 0.5;
double r239233 = log(r239202);
double r239234 = pow(r239233, r239205);
double r239235 = pow(r239196, r239205);
double r239236 = r239234 * r239235;
double r239237 = log(r239196);
double r239238 = pow(r239237, r239205);
double r239239 = r239235 * r239238;
double r239240 = r239236 + r239239;
double r239241 = r239232 * r239240;
double r239242 = 0.16666666666666666;
double r239243 = pow(r239233, r239220);
double r239244 = pow(r239196, r239220);
double r239245 = r239243 * r239244;
double r239246 = r239242 * r239245;
double r239247 = r239233 * r239196;
double r239248 = r239244 * r239238;
double r239249 = r239233 * r239248;
double r239250 = r239232 * r239249;
double r239251 = r239247 + r239250;
double r239252 = r239246 + r239251;
double r239253 = r239233 * r239235;
double r239254 = r239253 + r239196;
double r239255 = r239237 * r239254;
double r239256 = r239244 * r239237;
double r239257 = r239234 * r239256;
double r239258 = r239232 * r239257;
double r239259 = pow(r239237, r239220);
double r239260 = r239244 * r239259;
double r239261 = r239242 * r239260;
double r239262 = r239258 + r239261;
double r239263 = r239255 + r239262;
double r239264 = r239252 - r239263;
double r239265 = r239241 + r239264;
double r239266 = r239265 / r239203;
double r239267 = r239199 * r239266;
double r239268 = 3.6825165457393707e-44;
bool r239269 = r239196 <= r239268;
double r239270 = r239201 * r239202;
double r239271 = 0.5;
double r239272 = pow(r239202, r239205);
double r239273 = r239271 * r239272;
double r239274 = log(r239201);
double r239275 = r239274 * r239196;
double r239276 = r239273 + r239275;
double r239277 = r239270 + r239276;
double r239278 = r239272 * r239274;
double r239279 = r239271 * r239278;
double r239280 = r239277 - r239279;
double r239281 = r239280 / r239203;
double r239282 = r239199 * r239281;
double r239283 = 9.089128901802148e-18;
bool r239284 = r239196 <= r239283;
double r239285 = 50.0;
double r239286 = r239248 / r239202;
double r239287 = r239234 * r239244;
double r239288 = r239287 / r239202;
double r239289 = r239286 + r239288;
double r239290 = r239285 * r239289;
double r239291 = 16.666666666666664;
double r239292 = pow(r239196, r239217);
double r239293 = r239243 * r239292;
double r239294 = r239293 / r239202;
double r239295 = r239291 * r239294;
double r239296 = r239253 / r239202;
double r239297 = r239199 * r239296;
double r239298 = r239292 * r239238;
double r239299 = r239233 * r239298;
double r239300 = r239299 / r239202;
double r239301 = r239285 * r239300;
double r239302 = r239297 + r239301;
double r239303 = r239295 + r239302;
double r239304 = r239292 * r239259;
double r239305 = r239304 / r239202;
double r239306 = r239291 * r239305;
double r239307 = r239233 * r239256;
double r239308 = r239307 / r239202;
double r239309 = r239235 * r239237;
double r239310 = r239309 / r239202;
double r239311 = r239308 + r239310;
double r239312 = r239199 * r239311;
double r239313 = r239292 * r239237;
double r239314 = r239234 * r239313;
double r239315 = r239314 / r239202;
double r239316 = r239285 * r239315;
double r239317 = r239312 + r239316;
double r239318 = r239306 + r239317;
double r239319 = r239303 - r239318;
double r239320 = r239290 + r239319;
double r239321 = 2.1280471197997414e+177;
bool r239322 = r239196 <= r239321;
double r239323 = pow(r239203, r239196);
double r239324 = r239323 - r239201;
double r239325 = r239324 / r239203;
double r239326 = sqrt(r239325);
double r239327 = r239199 * r239326;
double r239328 = r239327 * r239326;
double r239329 = r239322 ? r239282 : r239328;
double r239330 = r239284 ? r239320 : r239329;
double r239331 = r239269 ? r239282 : r239330;
double r239332 = r239231 ? r239267 : r239331;
double r239333 = r239198 ? r239229 : r239332;
return r239333;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.5 |
|---|---|
| Target | 42.4 |
| Herbie | 30.2 |
if n < -2.4372743425058e-310Initial program 31.8
rmApplied flip--31.8
Simplified31.8
rmApplied flip--31.8
Simplified31.8
rmApplied add-sqr-sqrt31.8
Applied add-cube-cbrt31.8
Applied *-un-lft-identity31.8
Applied times-frac31.8
Applied times-frac31.8
Applied associate-/l*31.8
Simplified31.6
if -2.4372743425058e-310 < n < 2.053192934454679e-111Initial program 43.9
Taylor expanded around inf 26.9
Simplified44.3
Taylor expanded around 0 17.7
Simplified17.7
if 2.053192934454679e-111 < n < 3.6825165457393707e-44 or 9.089128901802148e-18 < n < 2.1280471197997414e+177Initial program 58.8
Taylor expanded around 0 25.0
if 3.6825165457393707e-44 < n < 9.089128901802148e-18Initial program 60.2
Taylor expanded around inf 57.9
Simplified60.8
Taylor expanded around 0 36.4
Simplified36.4
if 2.1280471197997414e+177 < n Initial program 61.9
Taylor expanded around inf 64.0
Simplified45.7
rmApplied add-sqr-sqrt45.8
Applied associate-*r*45.8
Final simplification30.2
herbie shell --seed 2019303
(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))))