100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -7.3291384716741002 \cdot 10^{181}:\\
\;\;\;\;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.8037587964115943 \cdot 10^{-219}:\\
\;\;\;\;100 \cdot \left(\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}}}{\sqrt[3]{\frac{i}{n}} \cdot \sqrt[3]{\frac{i}{n}}} \cdot \frac{\frac{\frac{{\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[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\sqrt[3]{\frac{i}{n}}}\right)\\
\mathbf{elif}\;n \le 1.54725910109650585 \cdot 10^{-128}:\\
\;\;\;\;\sqrt{100} \cdot \left(\sqrt{100} \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\right)\\
\mathbf{elif}\;n \le 6.44601937092272336 \cdot 10^{168}:\\
\;\;\;\;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}:\\
\;\;\;\;\sqrt{100} \cdot \left(\sqrt{100} \cdot \frac{{\left(\frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\right)\\
\end{array}double f(double i, double n) {
double r277260 = 100.0;
double r277261 = 1.0;
double r277262 = i;
double r277263 = n;
double r277264 = r277262 / r277263;
double r277265 = r277261 + r277264;
double r277266 = pow(r277265, r277263);
double r277267 = r277266 - r277261;
double r277268 = r277267 / r277264;
double r277269 = r277260 * r277268;
return r277269;
}
double f(double i, double n) {
double r277270 = n;
double r277271 = -7.3291384716741e+181;
bool r277272 = r277270 <= r277271;
double r277273 = 100.0;
double r277274 = 1.0;
double r277275 = i;
double r277276 = r277274 * r277275;
double r277277 = 0.5;
double r277278 = 2.0;
double r277279 = pow(r277275, r277278);
double r277280 = r277277 * r277279;
double r277281 = log(r277274);
double r277282 = r277281 * r277270;
double r277283 = r277280 + r277282;
double r277284 = r277276 + r277283;
double r277285 = r277279 * r277281;
double r277286 = r277277 * r277285;
double r277287 = r277284 - r277286;
double r277288 = r277275 / r277270;
double r277289 = r277287 / r277288;
double r277290 = r277273 * r277289;
double r277291 = -9.803758796411594e-219;
bool r277292 = r277270 <= r277291;
double r277293 = 1.0;
double r277294 = r277274 + r277288;
double r277295 = r277278 * r277270;
double r277296 = pow(r277294, r277295);
double r277297 = r277274 * r277274;
double r277298 = r277296 + r277297;
double r277299 = cbrt(r277298);
double r277300 = r277299 * r277299;
double r277301 = r277293 / r277300;
double r277302 = pow(r277294, r277270);
double r277303 = r277302 + r277274;
double r277304 = sqrt(r277303);
double r277305 = r277301 / r277304;
double r277306 = cbrt(r277288);
double r277307 = r277306 * r277306;
double r277308 = r277305 / r277307;
double r277309 = r277278 * r277295;
double r277310 = pow(r277294, r277309);
double r277311 = r277297 * r277297;
double r277312 = -r277311;
double r277313 = r277310 + r277312;
double r277314 = r277313 / r277299;
double r277315 = r277314 / r277304;
double r277316 = r277315 / r277306;
double r277317 = r277308 * r277316;
double r277318 = r277273 * r277317;
double r277319 = 1.5472591010965058e-128;
bool r277320 = r277270 <= r277319;
double r277321 = sqrt(r277273);
double r277322 = r277282 + r277293;
double r277323 = r277276 + r277322;
double r277324 = r277323 - r277274;
double r277325 = r277324 / r277288;
double r277326 = r277321 * r277325;
double r277327 = r277321 * r277326;
double r277328 = 6.446019370922723e+168;
bool r277329 = r277270 <= r277328;
double r277330 = pow(r277288, r277270);
double r277331 = r277330 - r277274;
double r277332 = r277331 / r277288;
double r277333 = r277321 * r277332;
double r277334 = r277321 * r277333;
double r277335 = r277329 ? r277290 : r277334;
double r277336 = r277320 ? r277327 : r277335;
double r277337 = r277292 ? r277318 : r277336;
double r277338 = r277272 ? r277290 : r277337;
return r277338;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.7 |
|---|---|
| Target | 42.3 |
| Herbie | 32.4 |
if n < -7.3291384716741e+181 or 1.5472591010965058e-128 < n < 6.446019370922723e+168Initial program 57.1
Taylor expanded around 0 35.6
if -7.3291384716741e+181 < n < -9.803758796411594e-219Initial program 28.1
rmApplied flip--28.1
Simplified28.0
rmApplied flip-+28.0
Simplified28.0
Simplified28.0
rmApplied add-cube-cbrt28.2
Applied add-sqr-sqrt28.2
Applied add-cube-cbrt28.2
Applied *-un-lft-identity28.2
Applied times-frac28.2
Applied times-frac28.2
Applied times-frac28.2
if -9.803758796411594e-219 < n < 1.5472591010965058e-128Initial program 32.9
rmApplied add-sqr-sqrt32.9
Applied associate-*l*32.9
Taylor expanded around 0 27.2
if 6.446019370922723e+168 < n Initial program 61.9
rmApplied add-sqr-sqrt61.9
Applied associate-*l*61.9
Taylor expanded around inf 64.0
Simplified44.6
Final simplification32.4
herbie shell --seed 2020025
(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))))