100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -8.97495351037423816126988860777680675991 \cdot 10^{177}:\\
\;\;\;\;\left(100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i}\right) \cdot n\\
\mathbf{elif}\;n \le -36228113.1512196958065032958984375:\\
\;\;\;\;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 -1.04145011309898066305251012619905231421 \cdot 10^{-294}:\\
\;\;\;\;100 \cdot \frac{\sqrt[3]{\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)}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}} \cdot \sqrt[3]{\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)}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{i}{\sqrt[3]{\frac{1}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}} \cdot \frac{\frac{1}{n}}{\sqrt[3]{\frac{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} - 1 \cdot 1}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}}}\\
\mathbf{elif}\;n \le 1.496434530671250065211050155721986673116 \cdot 10^{-224}:\\
\;\;\;\;100 \cdot \frac{\frac{\left(2 \cdot i + \left(2 \cdot \left(\log 1 \cdot n\right) + 1\right)\right) + \left(-1 \cdot 1\right)}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 7.653944076549357751092870318001482628066 \cdot 10^{-198}:\\
\;\;\;\;\left(100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i}\right) \cdot n\\
\mathbf{else}:\\
\;\;\;\;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}}\\
\end{array}double f(double i, double n) {
double r1676106 = 100.0;
double r1676107 = 1.0;
double r1676108 = i;
double r1676109 = n;
double r1676110 = r1676108 / r1676109;
double r1676111 = r1676107 + r1676110;
double r1676112 = pow(r1676111, r1676109);
double r1676113 = r1676112 - r1676107;
double r1676114 = r1676113 / r1676110;
double r1676115 = r1676106 * r1676114;
return r1676115;
}
double f(double i, double n) {
double r1676116 = n;
double r1676117 = -8.974953510374238e+177;
bool r1676118 = r1676116 <= r1676117;
double r1676119 = 100.0;
double r1676120 = 1.0;
double r1676121 = i;
double r1676122 = r1676121 / r1676116;
double r1676123 = r1676120 + r1676122;
double r1676124 = pow(r1676123, r1676116);
double r1676125 = r1676124 - r1676120;
double r1676126 = r1676125 / r1676121;
double r1676127 = r1676119 * r1676126;
double r1676128 = r1676127 * r1676116;
double r1676129 = -36228113.151219696;
bool r1676130 = r1676116 <= r1676129;
double r1676131 = r1676120 * r1676121;
double r1676132 = 0.5;
double r1676133 = 2.0;
double r1676134 = pow(r1676121, r1676133);
double r1676135 = r1676132 * r1676134;
double r1676136 = log(r1676120);
double r1676137 = r1676136 * r1676116;
double r1676138 = r1676135 + r1676137;
double r1676139 = r1676131 + r1676138;
double r1676140 = r1676134 * r1676136;
double r1676141 = r1676132 * r1676140;
double r1676142 = r1676139 - r1676141;
double r1676143 = r1676142 / r1676122;
double r1676144 = r1676119 * r1676143;
double r1676145 = -1.0414501130989807e-294;
bool r1676146 = r1676116 <= r1676145;
double r1676147 = r1676133 * r1676116;
double r1676148 = r1676133 * r1676147;
double r1676149 = pow(r1676123, r1676148);
double r1676150 = r1676120 * r1676120;
double r1676151 = r1676150 * r1676150;
double r1676152 = -r1676151;
double r1676153 = r1676149 + r1676152;
double r1676154 = pow(r1676123, r1676147);
double r1676155 = r1676154 + r1676150;
double r1676156 = r1676153 / r1676155;
double r1676157 = r1676124 + r1676120;
double r1676158 = r1676156 / r1676157;
double r1676159 = cbrt(r1676158);
double r1676160 = r1676159 * r1676159;
double r1676161 = 1.0;
double r1676162 = sqrt(r1676157);
double r1676163 = r1676161 / r1676162;
double r1676164 = cbrt(r1676163);
double r1676165 = r1676121 / r1676164;
double r1676166 = r1676161 / r1676116;
double r1676167 = r1676154 - r1676150;
double r1676168 = r1676167 / r1676162;
double r1676169 = cbrt(r1676168);
double r1676170 = r1676166 / r1676169;
double r1676171 = r1676165 * r1676170;
double r1676172 = r1676160 / r1676171;
double r1676173 = r1676119 * r1676172;
double r1676174 = 1.49643453067125e-224;
bool r1676175 = r1676116 <= r1676174;
double r1676176 = 2.0;
double r1676177 = r1676176 * r1676121;
double r1676178 = r1676133 * r1676137;
double r1676179 = r1676178 + r1676161;
double r1676180 = r1676177 + r1676179;
double r1676181 = -r1676150;
double r1676182 = r1676180 + r1676181;
double r1676183 = r1676182 / r1676157;
double r1676184 = r1676183 / r1676122;
double r1676185 = r1676119 * r1676184;
double r1676186 = 7.653944076549358e-198;
bool r1676187 = r1676116 <= r1676186;
double r1676188 = r1676187 ? r1676128 : r1676144;
double r1676189 = r1676175 ? r1676185 : r1676188;
double r1676190 = r1676146 ? r1676173 : r1676189;
double r1676191 = r1676130 ? r1676144 : r1676190;
double r1676192 = r1676118 ? r1676128 : r1676191;
return r1676192;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.9 |
|---|---|
| Target | 43.1 |
| Herbie | 32.7 |
if n < -8.974953510374238e+177 or 1.49643453067125e-224 < n < 7.653944076549358e-198Initial program 52.5
rmApplied associate-/r/52.0
Applied associate-*r*52.1
if -8.974953510374238e+177 < n < -36228113.151219696 or 7.653944076549358e-198 < n Initial program 52.0
Taylor expanded around 0 36.1
if -36228113.151219696 < n < -1.0414501130989807e-294Initial program 16.9
rmApplied flip--16.9
Simplified16.9
rmApplied flip-+16.9
Simplified16.8
Simplified16.8
rmApplied add-cube-cbrt16.8
Applied associate-/l*16.8
rmApplied add-sqr-sqrt16.8
Applied flip-+50.8
Applied associate-/r/50.8
Applied times-frac50.8
Applied cbrt-prod50.8
Applied div-inv50.8
Applied times-frac50.8
Simplified16.8
if -1.0414501130989807e-294 < n < 1.49643453067125e-224Initial program 33.7
rmApplied flip--33.7
Simplified33.7
Taylor expanded around 0 14.9
Final simplification32.7
herbie shell --seed 2020001
(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))))