100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -2.2717441078324636 \cdot 10^{-10}:\\
\;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)\\
\mathbf{elif}\;i \le 2.5704520336039343 \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 1.5471622621860444 \cdot 10^{204}:\\
\;\;\;\;100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)\\
\mathbf{else}:\\
\;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\
\end{array}double f(double i, double n) {
double r117196 = 100.0;
double r117197 = 1.0;
double r117198 = i;
double r117199 = n;
double r117200 = r117198 / r117199;
double r117201 = r117197 + r117200;
double r117202 = pow(r117201, r117199);
double r117203 = r117202 - r117197;
double r117204 = r117203 / r117200;
double r117205 = r117196 * r117204;
return r117205;
}
double f(double i, double n) {
double r117206 = i;
double r117207 = -2.2717441078324636e-10;
bool r117208 = r117206 <= r117207;
double r117209 = 100.0;
double r117210 = 1.0;
double r117211 = n;
double r117212 = r117206 / r117211;
double r117213 = r117210 + r117212;
double r117214 = pow(r117213, r117211);
double r117215 = r117214 / r117212;
double r117216 = r117210 / r117212;
double r117217 = r117215 - r117216;
double r117218 = r117209 * r117217;
double r117219 = 2.5704520336039343e-23;
bool r117220 = r117206 <= r117219;
double r117221 = r117210 * r117206;
double r117222 = 0.5;
double r117223 = 2.0;
double r117224 = pow(r117206, r117223);
double r117225 = r117222 * r117224;
double r117226 = log(r117210);
double r117227 = r117226 * r117211;
double r117228 = r117225 + r117227;
double r117229 = r117221 + r117228;
double r117230 = r117224 * r117226;
double r117231 = r117222 * r117230;
double r117232 = r117229 - r117231;
double r117233 = r117232 / r117206;
double r117234 = r117209 * r117233;
double r117235 = r117234 * r117211;
double r117236 = 1.5471622621860444e+204;
bool r117237 = r117206 <= r117236;
double r117238 = 1.0;
double r117239 = r117227 + r117238;
double r117240 = r117221 + r117239;
double r117241 = r117240 - r117210;
double r117242 = r117241 / r117212;
double r117243 = r117209 * r117242;
double r117244 = r117237 ? r117218 : r117243;
double r117245 = r117220 ? r117235 : r117244;
double r117246 = r117208 ? r117218 : r117245;
return r117246;
}




Bits error versus i




Bits error versus n
Results
| Original | 48.0 |
|---|---|
| Target | 48.1 |
| Herbie | 17.6 |
if i < -2.2717441078324636e-10 or 2.5704520336039343e-23 < i < 1.5471622621860444e+204Initial program 31.5
rmApplied div-sub31.5
if -2.2717441078324636e-10 < i < 2.5704520336039343e-23Initial program 58.5
Taylor expanded around 0 26.1
rmApplied associate-/r/8.5
Applied associate-*r*8.5
if 1.5471622621860444e+204 < i Initial program 33.2
Taylor expanded around 0 32.5
Final simplification17.6
herbie shell --seed 2020065
(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))))