100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -1.9422402419151365 \cdot 10^{+84}:\\
\;\;\;\;100 \cdot \frac{\left(\frac{1}{6} \cdot i + \frac{1}{2}\right) \cdot \left(i \cdot i\right) + i}{\frac{i}{n}}\\
\mathbf{elif}\;n \le -1.9580978454386 \cdot 10^{-310}:\\
\;\;\;\;100 \cdot \left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)\\
\mathbf{elif}\;n \le 7.230583244385522 \cdot 10^{-172}:\\
\;\;\;\;\frac{\left(\left(\left(\left(\left(\left(\left(n \cdot \log n\right) \cdot \left(n \cdot \log n\right)\right) \cdot n\right) \cdot \log i\right) \cdot 50 + \left(\left(n \cdot \log i\right) \cdot \left(n \cdot \log i\right)\right) \cdot 50\right) + \left(100 \cdot \left(n \cdot \log i\right) + \left(\left(\left(n \cdot \log n\right) \cdot \left(n \cdot \log n\right)\right) \cdot 50 + \left(\left(n \cdot \left(\left(n \cdot \log i\right) \cdot \left(n \cdot \log i\right)\right)\right) \cdot \log i\right) \cdot \frac{50}{3}\right)\right)\right) - \left(\left(\left(\left(\log i \cdot \log i\right) \cdot \left(\left(\left(n \cdot \log n\right) \cdot \left(n \cdot n\right)\right) \cdot \frac{50}{3}\right) + 100 \cdot \left(n \cdot \log n\right)\right) + \left(\left(\left(n \cdot n\right) \cdot \log n\right) \cdot \log i\right) \cdot 100\right) + \left(\left(\left(\left(n \cdot \log n\right) \cdot \left(n \cdot \log n\right)\right) \cdot n\right) \cdot \log n\right) \cdot \frac{50}{3}\right)\right) - \left(n \cdot \left(\left(n \cdot \log i\right) \cdot \left(n \cdot \log i\right)\right)\right) \cdot \left(\log n \cdot \frac{100}{3}\right)}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 1.8259858650896827 \cdot 10^{+217}:\\
\;\;\;\;100 \cdot \frac{\left(\frac{1}{6} \cdot i + \frac{1}{2}\right) \cdot \left(i \cdot i\right) + i}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1000000 \cdot {\left(\frac{i}{n}\right)}^{n}\right) \cdot \left({\left(\frac{i}{n}\right)}^{n} \cdot {\left(\frac{i}{n}\right)}^{n}\right) - 1000000}{\frac{i}{n} \cdot \left(\left(100 \cdot {\left(\frac{i}{n}\right)}^{n}\right) \cdot \left(100 \cdot {\left(\frac{i}{n}\right)}^{n}\right) + \left(100 \cdot \left(100 \cdot {\left(\frac{i}{n}\right)}^{n}\right) + 10000\right)\right)}\\
\end{array}double f(double i, double n) {
double r47498146 = 100.0;
double r47498147 = 1.0;
double r47498148 = i;
double r47498149 = n;
double r47498150 = r47498148 / r47498149;
double r47498151 = r47498147 + r47498150;
double r47498152 = pow(r47498151, r47498149);
double r47498153 = r47498152 - r47498147;
double r47498154 = r47498153 / r47498150;
double r47498155 = r47498146 * r47498154;
return r47498155;
}
double f(double i, double n) {
double r47498156 = n;
double r47498157 = -1.9422402419151365e+84;
bool r47498158 = r47498156 <= r47498157;
double r47498159 = 100.0;
double r47498160 = 0.16666666666666666;
double r47498161 = i;
double r47498162 = r47498160 * r47498161;
double r47498163 = 0.5;
double r47498164 = r47498162 + r47498163;
double r47498165 = r47498161 * r47498161;
double r47498166 = r47498164 * r47498165;
double r47498167 = r47498166 + r47498161;
double r47498168 = r47498161 / r47498156;
double r47498169 = r47498167 / r47498168;
double r47498170 = r47498159 * r47498169;
double r47498171 = -1.9580978454386e-310;
bool r47498172 = r47498156 <= r47498171;
double r47498173 = 1.0;
double r47498174 = r47498168 + r47498173;
double r47498175 = pow(r47498174, r47498156);
double r47498176 = r47498175 / r47498168;
double r47498177 = r47498173 / r47498168;
double r47498178 = r47498176 - r47498177;
double r47498179 = r47498159 * r47498178;
double r47498180 = 7.230583244385522e-172;
bool r47498181 = r47498156 <= r47498180;
double r47498182 = log(r47498156);
double r47498183 = r47498156 * r47498182;
double r47498184 = r47498183 * r47498183;
double r47498185 = r47498184 * r47498156;
double r47498186 = log(r47498161);
double r47498187 = r47498185 * r47498186;
double r47498188 = 50.0;
double r47498189 = r47498187 * r47498188;
double r47498190 = r47498156 * r47498186;
double r47498191 = r47498190 * r47498190;
double r47498192 = r47498191 * r47498188;
double r47498193 = r47498189 + r47498192;
double r47498194 = r47498159 * r47498190;
double r47498195 = r47498184 * r47498188;
double r47498196 = r47498156 * r47498191;
double r47498197 = r47498196 * r47498186;
double r47498198 = 16.666666666666668;
double r47498199 = r47498197 * r47498198;
double r47498200 = r47498195 + r47498199;
double r47498201 = r47498194 + r47498200;
double r47498202 = r47498193 + r47498201;
double r47498203 = r47498186 * r47498186;
double r47498204 = r47498156 * r47498156;
double r47498205 = r47498183 * r47498204;
double r47498206 = r47498205 * r47498198;
double r47498207 = r47498203 * r47498206;
double r47498208 = r47498159 * r47498183;
double r47498209 = r47498207 + r47498208;
double r47498210 = r47498204 * r47498182;
double r47498211 = r47498210 * r47498186;
double r47498212 = r47498211 * r47498159;
double r47498213 = r47498209 + r47498212;
double r47498214 = r47498185 * r47498182;
double r47498215 = r47498214 * r47498198;
double r47498216 = r47498213 + r47498215;
double r47498217 = r47498202 - r47498216;
double r47498218 = 33.333333333333336;
double r47498219 = r47498182 * r47498218;
double r47498220 = r47498196 * r47498219;
double r47498221 = r47498217 - r47498220;
double r47498222 = r47498221 / r47498168;
double r47498223 = 1.8259858650896827e+217;
bool r47498224 = r47498156 <= r47498223;
double r47498225 = 1000000.0;
double r47498226 = pow(r47498168, r47498156);
double r47498227 = r47498225 * r47498226;
double r47498228 = r47498226 * r47498226;
double r47498229 = r47498227 * r47498228;
double r47498230 = r47498229 - r47498225;
double r47498231 = r47498159 * r47498226;
double r47498232 = r47498231 * r47498231;
double r47498233 = r47498159 * r47498231;
double r47498234 = 10000.0;
double r47498235 = r47498233 + r47498234;
double r47498236 = r47498232 + r47498235;
double r47498237 = r47498168 * r47498236;
double r47498238 = r47498230 / r47498237;
double r47498239 = r47498224 ? r47498170 : r47498238;
double r47498240 = r47498181 ? r47498222 : r47498239;
double r47498241 = r47498172 ? r47498179 : r47498240;
double r47498242 = r47498158 ? r47498170 : r47498241;
return r47498242;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.9 |
|---|---|
| Target | 42.3 |
| Herbie | 30.4 |
if n < -1.9422402419151365e+84 or 7.230583244385522e-172 < n < 1.8259858650896827e+217Initial program 53.5
Taylor expanded around 0 36.7
Simplified36.6
if -1.9422402419151365e+84 < n < -1.9580978454386e-310Initial program 21.9
rmApplied div-sub22.0
if -1.9580978454386e-310 < n < 7.230583244385522e-172Initial program 40.6
Taylor expanded around inf 19.3
Simplified40.9
Taylor expanded around inf 19.3
Simplified40.9
Taylor expanded around 0 13.6
Simplified13.6
if 1.8259858650896827e+217 < n Initial program 58.7
Taylor expanded around inf 61.2
Simplified43.1
Taylor expanded around inf 61.2
Simplified43.0
rmApplied flip3--43.0
Applied associate-/l/43.1
Simplified43.1
Final simplification30.4
herbie shell --seed 2019104
(FPCore (i n)
:name "Compound Interest"
: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))))